您的位置:首页 > 编程语言 > Java开发

【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容器里。

以下是一个经过测试可以运行的程序:

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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: