我用下面的代碼來發送mail.Text消息發送工作正常,但郵件帶有附件不能正常使用它給Exception.How解決這個在java中發送消息時MessagingExceptionIOException?
javax.mail.MessagingException的:在發送消息IOException異常; 嵌套的異常是: javax.activation.UnsupportedDataTypeException:無對象DCH用於MIME類型multipart/mixed; 邊界= 「---- = _ Part_0_10430987.1294298904906」 在com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:676) 在javax.mail.Transport.send0(Transport.java:189) 在SendMail.main(SendMail.java:22) 上的javax.mail.Transport.send(Transport.java:118) at Gmailer.GMailSender.sendMailAttach(GMailSender.java:114) 由javax.activation.UnsupportedDataTypeException :無MIME類型multipart/mixed的對象DCH; 邊界= 「---- = _ Part_0_10430987.1294298904906」 在javax.activation.ObjectDataContentHandler.writeTo(未知來源) 在javax.activation.DataHandler.writeTo(未知來源) 在javax.mail.internet.MimeBodyPart.writeTo (MimeBodyPart.java:1403) at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1745) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:636) ... 4更
郵件帶附件代碼:
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());
}
}
文本郵件發送代碼:
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) {
}
}
堆棧跟蹤不完整,請給出完整的一個。 – Kartoch 2011-01-06 07:53:25
重複http://stackoverflow.com/questions/1969667/send-a-mail-from-java5-and-java6的 – dkarp 2011-01-16 11:43:19