Lucas_Camara 4 de ago. de 2020
Posta a exceção completa.
Gustavo19 4 de ago. de 2020
Diz o seguinte:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.IOException: No MimeBodyPart content at com.sun.mail.smtp.SMTPTransport.sendMessage
Lucas_Camara 4 de ago. de 2020
Ao realizar o envio o valor de descricaoEmail está null? Pelo que li, tem que mandar pelo menos uma string vazia como corpo da mensagem.
Gustavo19 4 de ago. de 2020
De todos os parâmetros, o único que tem algo ‘null’ é o filePath do arquivo. e dos restante, MimeBodyPart.
Gustavo19 5 de ago. de 2020 1 like
Consegui resolver a exceção ao adicionar “mbp.attachFile(arquivo);” no código, porém no e-mail mostra apenas o arquivo e não o texto (descricaoEmail) junto.
[CODE]
public void enviarComArquivo(File arquivo, String titulo, String descricaoEmail, String destinatario,
String copia) {
final String email = "[email removido]" ;
final String password = "senha" ;
String host = "smtp" ;
Properties props = new Properties ();
props . put ( "mail.smtp.auth" , "true" );
props . put ( "mail.smtp.starttls.enable" , "true" );
props . put ( "mail.smtp.host" , host );
props . put ( "mail.smtp.port" , "porta" );
Session session = Session . getInstance ( props , new Authenticator () {
protected PasswordAuthentication getPasswordAuthentication () {
return new PasswordAuthentication ( email , password );
}
});
try {
MimeMessage message = new MimeMessage ( session );
MimeBodyPart mbp = new MimeBodyPart ();
Multipart mp = new MimeMultipart ();
message . setFrom ( new InternetAddress ( email ));
message . setRecipients ( Message . RecipientType . TO , InternetAddress . parse ( destinatario ));
message . setRecipients ( Message . RecipientType . CC , InternetAddress . parse ( copia ));
message . setRecipients ( Message . RecipientType . BCC , InternetAddress . parse ( "[email removido]" ));
message . setSubject ( titulo );
message . setText ( descricaoEmail );
DataSource file = new FileDataSource ( arquivo . getName ());
message . setDisposition ( Part . ATTACHMENT );
message . setDataHandler ( new DataHandler ( file ));
message . setFileName ( file . getName ());
mbp . attachFile ( arquivo );
mp . addBodyPart ( mbp );
message . setContent ( mp );
Transport . send ( message );
} catch ( MessagingException me ) {
JOptionPane . showMessageDialog ( null , me . getMessage ());
}
}
Solucao aceita
Lucas_Camara 5 de ago. de 2020
Tente adicionar o texto do email como outro bodypart:
MimeBodyPart textBodyPart = new MimeBodyPart ();
textBodyPart . setText ( descricaoEmail );
//...
mp . addBodyPart ( textBodyPart );
Gustavo19 5 de ago. de 2020 1 like
Obrigado @Lucas_Camara ! Resolveu meu problema! Segue o código finalizado e funcional:
public void enviarComArquivo ( File arquivo , String titulo , String descricaoEmail , String destinatario ,
String copia ) {
final String email = "[email removido]" ;
final String password = "senha" ;
String host = "smtp" ;
Properties props = new Properties ();
props . put ( "mail.smtp.auth" , "true" );
props . put ( "mail.smtp.starttls.enable" , "true" );
props . put ( "mail.smtp.host" , host );
props . put ( "mail.smtp.port" , "porta" );
Session session = Session . getInstance ( props , new Authenticator () {
protected PasswordAuthentication getPasswordAuthentication () {
return new PasswordAuthentication ( email , password );
}
});
try {
MimeMessage message = new MimeMessage ( session );
MimeBodyPart mbp = new MimeBodyPart ();
Multipart mp = new MimeMultipart ();
MimeBodyPart textBodyPart = new MimeBodyPart ();
message . setFrom ( new InternetAddress ( email ));
message . setRecipients ( Message . RecipientType . TO , InternetAddress . parse ( destinatario ));
message . setRecipients ( Message . RecipientType . CC , InternetAddress . parse ( copia ));
message . setRecipients ( Message . RecipientType . BCC , InternetAddress . parse ( "[email removido]" ));
message . setSubject ( titulo );
textBodyPart . setText ( descricaoEmail );
mp . addBodyPart ( textBodyPart );
DataSource file = new FileDataSource ( arquivo . getName ());
message . setDisposition ( Part . ATTACHMENT );
message . setDataHandler ( new DataHandler ( file ));
message . setFileName ( file . getName ());
mbp . attachFile ( arquivo );
mp . addBodyPart ( mbp );
message . setContent ( mp );
Transport . send ( message );
} catch ( MessagingException me ) {
JOptionPane . showMessageDialog ( null , me . getMessage ());
}
}