【Java mail 入门教程】第七讲 邮件转发
2012-09-10 12:55
246 查看
邮件转发的思路:
1、 取得要转发的邮件信息(Message message)
2、 创建一个邮件信息体(Message forward)
3、 设置forward的主题(Subject)、源地址(From)、接收者(Recipient)
4、 创建Multipart的容器,在邮件转发里容器只要两个邮件体(BodyPart)就可以实现转发,一个是文字邮件部分,一个是被转发的邮件体(请看下面说明)
5、 讲Multipart容器放到转发邮件信息里,forward.setContent(multipart);
6、 发送邮件Transport.send(forward);
说明:思路3 源地址要与message的源地址一致
思路4 每个邮件是由多个部分组成,每个部分称为一个邮件体部分,是一个BodyPart类对象。BodyPart包含在Multipart容器里。
以下是一个经过测试可以运行的程序:
1、 取得要转发的邮件信息(Message message)
2、 创建一个邮件信息体(Message forward)
3、 设置forward的主题(Subject)、源地址(From)、接收者(Recipient)
4、 创建Multipart的容器,在邮件转发里容器只要两个邮件体(BodyPart)就可以实现转发,一个是文字邮件部分,一个是被转发的邮件体(请看下面说明)
5、 讲Multipart容器放到转发邮件信息里,forward.setContent(multipart);
6、 发送邮件Transport.send(forward);
说明:思路3 源地址要与message的源地址一致
思路4 每个邮件是由多个部分组成,每个部分称为一个邮件体部分,是一个BodyPart类对象。BodyPart包含在Multipart容器里。
以下是一个经过测试可以运行的程序:
package com.mail; import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class ForwardMail { private static final String HOST_NAME = "pop.qq.com"; private static final String SEND_HOST_NAME = "smtp.qq.com"; private static final String PASSWORD = "********"; private static final String EMAIL_FROM = "******@qq.com"; private static final String USER_NAME = "*******@qq.com"; private static final String PROTOCOL = "pop3"; private static final String SEND_PROTOCOL = "smtp"; public static void forwardMail(Session session, Message message) throws Exception { // 创建转发邮件信息 Message forward = new MimeMessage(session); // 设置主题 forward.setSubject("Fwd: " + message.getSubject()); forward.setFrom(new InternetAddress(EMAIL_FROM)); forward.addRecipient(Message.RecipientType.TO, new InternetAddress("********@sina.com")); // 文字邮件体部分 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); forward.setContent(multipart); // 发送 Transport.send(forward); System.out.println("msg forward ...."); } public static void listMail() throws Exception { Properties props = new Properties(); props.put("mail.smtp.host", SEND_HOST_NAME); props.put("mail.pop.host", HOST_NAME); props.put("mail.transport.protocol","smtp"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new SimpleAuthenticator(USER_NAME, PASSWORD)); Store store = session.getStore(PROTOCOL); store.connect(HOST_NAME, USER_NAME, PASSWORD); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message[] messages = folder.getMessages(); InternetAddress address; for (int i = messages.length-1; i >= 0; i--) { address = (InternetAddress)messages[i].getFrom()[0]; /* if(address != null) { System.out.println(address.getPersonal()); } */ if (null != address && "秋天的童话".equals(address.getPersonal())) { System.out.println("第" + i + "个:" + messages[i].getSubject()); //转发邮件 forwardMail(session, messages[i]); } } folder.close(true); store.close(); } public static void main(String[] args) { try { listMail(); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 【Java mail 入门教程】第七讲 邮件转发
- 【Java mail 入门教程】第七讲 邮件转发
- 【Java mail 入门教程】第二讲 hello world 入门程序(发送邮件)
- 【Java mail 入门教程】第三讲 接收邮件
- 【Java mail 入门教程】第三讲 接收邮件
- 【Java mail 入门教程】第四讲 删除邮件
- 【Java mail 入门教程】第二讲 hello world 入门程序(发送邮件)
- 【Java mail 入门教程】第六讲 邮件回复
- 【Java mail 入门教程】第四讲 删除邮件
- 【Java mail 入门教程】第二讲 hello world 入门程序(发送邮件)
- 【Java mail 入门教程】第三讲 接收邮件
- 【Java mail 入门教程】第五讲 邮件认证
- 【Java mail 入门教程】第四讲 删除邮件
- 【Java mail 入门教程】第五讲 邮件认证
- 【Java mail 入门教程】第五讲 邮件认证
- 【Java mail 入门教程】第六讲 邮件回复
- jenkins+maven+git+ 邮件自动转发 持续化集成 图文教程
- flask入门的教程-邮件支持 Email Support
- J2EE入门视频教程第七讲——JDBC技术简介及使用
- java mail 邮件转发 七