MessagingExceptionIOException al enviar un mensaje en Java?
Utilizo el siguiente código para enviar correo. El envío de mensajes de texto funciona bien pero el correo con archivo adjunto no funciona, da la excepción. Cómo resolver esto
javax.mail.MessagingException: IOException al enviar el mensaje; la excepción anidada es: javax.activation.UnsupportedDataTypeException: ningún objeto DCH para el tipo MIME multipart / mixed; boundary = "---- = _ Part_0_10430987.1294298904906" en com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java:676) en javax.mail.Transport.send0 (Transport.java:189) en javax.mail .Transport.send (Transport.java:118) en Gmailer.GMailSender.sendMailAttach (GMailSender.java:114) en SendMail.main (SendMail.java:22) Causado por: javax.activation.UnsupportedDataTypeException: ningún objeto DCH para el tipo MIME multiparte / mixto; boundary = "---- = _ Part_0_10430987.1294298904906" en javax.activation.ObjectDataContentHandler.writeTo (fuente desconocida) en javax.activation.DataHandler.writeTo (fuente desconocida) en javax.mail.internet.MimeBartPart.BritePody.artime.artime.artime.artimeBody : 1403) en javax.mail.internet.MimeMessage.writeTo (MimeMessage.java:1745) en com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java:636) ... 4 más
Correo con código adjunto:
public synchronized void sendMailAttach(String subject, String body,
String sender, String recipients) {
try {
MimeMessage message = new MimeMessage(session);
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setText("hi Demo");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// Part two is attachment
messageBodyPart = new MimeBodyPart();
String filename = "mail.txt";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
// Put parts in message
message.setContent(multipart);
if (recipients.indexOf(',') > 0)
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO,
new InternetAddress(recipients));
Transport.send(message);
}
catch (MessagingException e) {
System.out.println("MessagingException" + e.getMessage());
}
catch (Exception e) {
System.out.println("Mail Send Exception " + e.getMessage());
}
}
Código de envío de correo de texto:
public synchronized void sendMail(String subject, String body,
String sender, String recipients) throws Exception {
try {
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(
body.getBytes(), "text/plain"));
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);
if (recipients.indexOf(',') > 0)
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO,
new InternetAddress(recipients));
Transport.send(message);
} catch (Exception e) {
}
}