我在用Javamail做转发邮件报如下错:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.IOException: javax.mail.MessagingException: No MimeBodyPart content
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1167)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at com.mail.SendEmail.transmitEmail(SendEmail.java:253)
at com.mail.SendEmail.main(SendEmail.java:274)
Caused by: java.io.IOException: javax.mail.MessagingException: No MimeBodyPart content
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:105)
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:869)
at javax.activation.DataHandler.writeTo(DataHandler.java:302)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1485)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1773)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
... 4 more实现代码如下:
/**
* 邮件转发
*
*/
public void transmitEmail()throws UnsupportedEncodingException {
Properties prop = new Properties(); // 获取系统环境
Authenticator auth = new MailAuthenticator(); // 邮件服务器认证
prop.put("mail.smtp.host", Email.Email_Host);
prop.put("mail.smtp.auth", "true");
prop.put("mail.transport.protocol","smtp");
Session session = Session.getDefaultInstance(prop, auth);// 设置对话和邮件服务器进行通讯
try {
//查找要转发的邮件
Store store= session.getStore("pop3");
String host="192.168.1.247",username="[email protected]", password="000000";//要读取的邮箱的服务器地址,邮箱用户名和密码
store.connect(host,username, password);
Folder folder = store.getFolder("INBOX");//OUTBOX
folder.open(Folder.READ_WRITE);
Message message=folder.getMessage(2);
//创建转发邮件信息
Message forward = new MimeMessage(session); /** 设置邮件对象 */
//设置主题
forward.setSubject("FW:我是主题");
forward.setFrom(new InternetAddress("[email protected]"));
forward.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]","我是收件人"));
//文字邮件体部分
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("我是文字邮件体部分");
// 创建Multipart容器
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart); // 被转发的文字邮件体部分
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());
// 添加到Multipart容器
multipart.addBodyPart(messageBodyPart);
// Associate multi-part with message
forward.setContent(multipart);
System.out.println("sendNormalEmail() 开始转发邮件……");
Transport.send(forward); // 发送邮件
System.out.println("转发成功!");
} catch (MessagingException e) {
System.out.println("转发失败!");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
补充:用Foxmail作邮件服务器。javamail邮件邮件服务器Foxmail
javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.IOException: javax.mail.MessagingException: No MimeBodyPart content
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1167)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at com.mail.SendEmail.transmitEmail(SendEmail.java:253)
at com.mail.SendEmail.main(SendEmail.java:274)
Caused by: java.io.IOException: javax.mail.MessagingException: No MimeBodyPart content
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:105)
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:869)
at javax.activation.DataHandler.writeTo(DataHandler.java:302)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1485)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1773)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
... 4 more实现代码如下:
/**
* 邮件转发
*
*/
public void transmitEmail()throws UnsupportedEncodingException {
Properties prop = new Properties(); // 获取系统环境
Authenticator auth = new MailAuthenticator(); // 邮件服务器认证
prop.put("mail.smtp.host", Email.Email_Host);
prop.put("mail.smtp.auth", "true");
prop.put("mail.transport.protocol","smtp");
Session session = Session.getDefaultInstance(prop, auth);// 设置对话和邮件服务器进行通讯
try {
//查找要转发的邮件
Store store= session.getStore("pop3");
String host="192.168.1.247",username="[email protected]", password="000000";//要读取的邮箱的服务器地址,邮箱用户名和密码
store.connect(host,username, password);
Folder folder = store.getFolder("INBOX");//OUTBOX
folder.open(Folder.READ_WRITE);
Message message=folder.getMessage(2);
//创建转发邮件信息
Message forward = new MimeMessage(session); /** 设置邮件对象 */
//设置主题
forward.setSubject("FW:我是主题");
forward.setFrom(new InternetAddress("[email protected]"));
forward.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]","我是收件人"));
//文字邮件体部分
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("我是文字邮件体部分");
// 创建Multipart容器
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart); // 被转发的文字邮件体部分
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());
// 添加到Multipart容器
multipart.addBodyPart(messageBodyPart);
// Associate multi-part with message
forward.setContent(multipart);
System.out.println("sendNormalEmail() 开始转发邮件……");
Transport.send(forward); // 发送邮件
System.out.println("转发成功!");
} catch (MessagingException e) {
System.out.println("转发失败!");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
补充:用Foxmail作邮件服务器。javamail邮件邮件服务器Foxmail
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货