Java Mail e referências para imagens

Olá pessoal!

Criei uma aplicação para envio de emails a partir de endereços em um banco de dados, está funcionando sem problemas. Porém os emails não tem corpo da mensagem, eles devem ter apenas uma referência à uma imagem que está no servidor da nossa home page, assim envio esta imagem centenas de vezes sem precisar carregar o arquivo em si. Tentei fazer usando
, mas não está dando certo e não sei onde estou errando… Mandar emails só com texto puro funfa sem problemas…

Alguma dica ou exemplo?!

Muito obrigado!

Content-Type ?

http://www.jscape.com/articles/sending_html_email_using_java.html

[quote=peczenyj]Content-Type ?

http://www.jscape.com/articles/sending_html_email_using_java.html[/quote]

Pois é, mas eu estou conseguindo enviar html, mandei algum texto em negrito com as tags dfhjdf e funcionou…

Não estou usando as classes destes exemplos que você postou, não tem estas classes aqui!

Estou fazendo mais ou menos como está definido aqui.

Outro detalhe é que meu programa não está autenticando no servidor de email que estou usando para enviar, apesar de ter implementado para isso… qualquer senha que eu coloco ele consegue enviar a mensagem do mesmo jeito… chega sem problemas no destino…

tentei colar meu código aqui mas não consigo! Ele bagunça todas as tags html, mesmo que eu faça dentro das tags de código… como eu faço!?

Alguma dica!?

Muito obrigado!

Ah, mais um detalhe, que eu não sei se tem haver, mas…

A imagem que estou tentando exibir está em .gif

se eu crio um documento html e tento exibir no navegador, exibe sem problemas, mas dentro do email não vai…

Estou usando no cabeçalho, está certo!?

Obrigado!

[quote=cassio]Olá pessoal!

Criei uma aplicação para envio de emails a partir de endereços em um banco de dados, está funcionando sem problemas. Porém os emails não tem corpo da mensagem, eles devem ter apenas uma referência à uma imagem que está no servidor da nossa home page, assim envio esta imagem centenas de vezes sem precisar carregar o arquivo em si. Tentei fazer usando
, mas não está dando certo e não sei onde estou errando… Mandar emails só com texto puro funfa sem problemas…

Alguma dica ou exemplo?!

Muito obrigado!
[/quote]

O que aparece no leitor de e-mail? Em qual leitor de e-mail você está testando?

Como você está fazendo referencia a imagem na tag ?
No caso de um e-mail, você tem que colocar a URL completa da imagem. Por exemplo:

alguns clientes de email bloqueiam imagens dentro do corpo do email.

mostre o corpo de um email que vc enviou completo, com os headers, e vamos ver o que falta…

Pessoal, coloquei todo o projeto aqui porque achei que ficaria mais organizado…
A classe onde crio o corpo do email está logo no inicio do arquivo GuiEnvioDeEmail.java, dentro de src/br/com/envioemail/SHH

Tem dois dias que estou quebrando a cabeça com isso… Quando eu pego o email, aparece apenas aquele icone com um triângulo, um quadrado e uma bolinha, tipo quando não consegue carregar a imagem…

Muito obrigado a todos!

Bom dia!

Já tentaste mudar o data handler da mensagem? Algo tipo :

MimeMessage mensagem = new MimeMessage(session); ... mensagem.setDataHandler(new DataHandler(new HTMLDataSource( corpoDaMensagem)));
E o código do HTMLDataSource:

[code]public class HTMLDataSource implements DataSource {
private String html;

	public HTMLDataSource(String htmlString) {
		html = htmlString;
	}

	// Return html string in an InputStream.
	// A new stream must be returned each time.
	public InputStream getInputStream() throws IOException {
		if (html == null)
			throw new IOException("Null HTML");
		return new ByteArrayInputStream(html.getBytes());
	}

	public OutputStream getOutputStream() throws IOException {
		throw new IOException("This DataHandler cannot write HTML");
	}

	public String getContentType() {
		return "text/html";
	}

	public String getName() {
		return "JAF text/html dataSource to send e-mail only";
	}
}[/code]

Tente aí. Até!

Problema resolvido, muito obrigado a todos!

A única coisa que me desagrada é que nem todos os serviços de email exibem a imagem dentro do corpo do email automaticamente… vc precisa clicar em um link que autoriza a exibição… ruim… eheheh

Obrigado!

Pessoal, tudo bem?

Apesar do post ser bem antigo, estou com o mesmo problema hoje, sou iniciante no java e estou tentando fazer uns testes para envio de imagens no corpo da mensagem antes de desenvolver a aplicação propriamente dita, porém não consegui compreender a forma que foi feita, nesse caso gostaria de uma ajuda se possivel:

public TesteEMAIL() throws AddressException, MessagingException {
        //objeto para definicao das propriedades de configuracao do provider  
        Properties props = new Properties();
        //Propriedades da mensagem  
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.host", "smtp.gmail.com");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.port", "587");
        final String pwd = "xxxxxx";
        final String remetente = "xxxxxx@gmail.com";
        String destinatario = "zzzzzzzz@yahoo.com.br";
        //obtendo um Session com a configuração   
        //do servidor SMTP definida em props  
        Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() { 
            @Override
                protected PasswordAuthentication getPasswordAuthentication() { 
                    return new PasswordAuthentication( 
                            remetente, pwd);
                }});
        //criando a mensagem  
        MimeMessage message = new MimeMessage(session);
        //substituir pelos e-mails desejados  
        Address from = new InternetAddress(remetente);
        Address to = new InternetAddress(destinatario);
        //configurando o remetente e o destinatario  
        message.setFrom(from);
        message.addRecipient(RecipientType.TO, to);
        //configurando a data de envio,  o assunto e o texto da mensagem  
        message.setSentDate(new Date());
        message.setSubject("Assunto da mensagem");
        //message.setText("Texto da mensagem!");
        String imagem = "C:\\Users\\Paulo\\Desktop\\Metodologia.jpg";
        message.setText(imagem);
    //    message.setText(new FileDataSource(imagem));
        //enviando  
        Transport.send(message);
}

Para esse codigo, o setText escreve o caminho da imagem no corpo do email, tentei fazer com o metodo FileDataSource mas deu erro.