Imagem com JavaMail ( de modo que não peça a permissão para abri-lá no leitor de email)
9 respostas
R
RafaelViana
Boa Tarde,
Estou com uma dúvida estou usando JavaMail para enviar emails com o Java, para criar um cabeçalho em todos os emails eu pego a imagem e coloco no inicio do html da mensagem (corpo da mensagem).Porém, no leitor de emails aparece aquela para abrir a imagem ( ela não vem aberta por padrão ). Tá certo achei que isso fosse um padrão já que recebo várias mensagens que precisam ser clicadas na barra para abrir a imagem.
A mensagem relacionada a carregar conteúdo remoto, mas como eu faço para o conteúdo não ser remoto já que é um email?
PORÉM, ao utilizar papel de carta do outlook express não aparece essa mensagem.
Você pode criar seu email como multipart/alternative e colocar a imagem junto ao email como uma referencia.
Exemplo:
ByteArrayOutputStreambos=....// sua imagemMimeBodyPartimagePart=newMimeBodyPart();// Loading the imageDataSourceds=newByteArrayDataSource(bos.toByteArray(),"image/png");imagePart.setDataHandler(newDataHandler(ds));imagePart.setFileName("selo.png");// Setting the headerimagePart.setHeader("Content-ID","<image>");imagePart.setDisposition("inline");
Ai no email voce faz a referência:
<imgalt="Selo"src="cid:image">
Abraço
R
RafaelViana
Não entendi isso porque cid:image?
<imgalt="Selo"src="cid:image">
Está enviando o email aparece apenas a mensagem Selo ( em vez da imagem )
Agora deu certo em partes.Não usei essa string no construtor.
Se eu coloco a MimeBodyPart que tem a imagem em uma Multpart e coloca como content da mensagem, ela aparece por padrão na padrão ( como eu preciso ), porém a imagem vai como anexo também. ( isso está certo? )
Além disso, não sei se tem como colocar dois Multpart na mesma mensagem.
O certo seria colocar mensagem do email, anexos e imagem em um mesmo multipart e referenciá-la pelo cid:image? Esse apontamento do src não está funcionando…
R
RafaelViana
Ao colocar tudo no mesmo Multipart a imagem não acha nada no src ( fica aquele icone de imagem não encontrada ), e a imagem aparece abaixo carregada no anexo.Assim como uma cópia dela em anexo.
R
RafaelViana
Alguma sugestão para me ajudar?
P
paulorborges
Prezados amigos, estou com um problema semelhante ao relatado nesse tópico, porém ainda não consegui enviar a imagem no corpo do e-mail e sim somente como anexo. Se puderem me ajudar, segue abaixo o codigo que eu estou utilizando.
publicTesteEMAIL()throwsAddressException,MessagingException{//objeto para definicao das propriedades de configuracao do provider Propertiesprops=newProperties();//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");finalStringpwd="XXXXXX";finalStringremetente="[email removido]";Stringdestinatario="[email removido]";//obtendo um Session com a configuração //do servidor SMTP definida em props Sessionsession=Session.getDefaultInstance(props,newjavax.mail.Authenticator(){@OverrideprotectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication(remetente,pwd);}});//criando a mensagem MimeMessagemessage=newMimeMessage(session);//substituir pelos e-mails desejados Addressfrom=newInternetAddress(remetente);Addressto=newInternetAddress(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(newDate());message.setSubject("Assunto da mensagem");//message.setText("Texto da mensagem!");Stringimagem="C:\\Users\\xxxxx\\Desktop\\Metodologia.jpg";message.setText(imagem);// message.setText(new FileDataSource(imagem));//enviando Transport.send(message);}
Um detalhe é que nos exemplos enviadas, vocês estão tratando a mensagem como multipart, mas como eu vou trabalhar somente com a imagem e não vou colocar texto, seria necessário?