首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

【Java mail 入门教程】第七讲 邮件中转

2012-10-25 
【Java mail 入门教程】第七讲 邮件转发邮件转发的思路:1、取得要转发的邮件信息(Message message)2、创建一个

【Java mail 入门教程】第七讲 邮件转发
邮件转发的思路:
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 package com.mail;
2
3  import java.util.Properties;
4
5  import javax.mail.*;
6  import javax.mail.internet.*;
7
8 public class ForwardMail {
9    
10     private static final String HOST_NAME = "pop.qq.com";
11     private static final String SEND_HOST_NAME = "smtp.qq.com";
12     private static final String PASSWORD = "********";
13     private static final String EMAIL_FROM = "******@qq.com";
14     private static final String USER_NAME = "*******@qq.com";
15     private static final String PROTOCOL = "pop3";
16     private static final String SEND_PROTOCOL = "smtp";
17
18     public static void forwardMail(Session session, Message message) throws Exception {
19         // 创建转发邮件信息
20         Message forward = new MimeMessage(session);
21         // 设置主题
22         forward.setSubject("Fwd: " + message.getSubject());
23         forward.setFrom(new InternetAddress(EMAIL_FROM));
24         forward.addRecipient(Message.RecipientType.TO,   new InternetAddress("********@sina.com"));
25         // 文字邮件体部分
26         BodyPart messageBodyPart = new MimeBodyPart();
27         messageBodyPart.setText(  "邮件转发" );
28         //创建Multipart的容器
29         Multipart multipart = new MimeMultipart();
30         multipart.addBodyPart(messageBodyPart);
31         // 被转发的文字邮件体部分
32         messageBodyPart = new MimeBodyPart();
33         messageBodyPart.setDataHandler(message.getDataHandler());
34         // 添加到Multipart容器
35         multipart.addBodyPart(messageBodyPart);
36         forward.setContent(multipart);
37         // 发送
38         Transport.send(forward);
39         System.out.println("msg forward ....");
40     }
41    
42     public static void listMail() throws Exception {
43         Properties props = new Properties();
44         props.put("mail.smtp.host", SEND_HOST_NAME);
45         props.put("mail.pop.host", HOST_NAME);
46         props.put("mail.transport.protocol","smtp");
47         props.put("mail.smtp.auth", "true");
48
49        
50         Session session = Session.getDefaultInstance(props, new SimpleAuthenticator(USER_NAME, PASSWORD));  
51         Store store = session.getStore(PROTOCOL);  
52         store.connect(HOST_NAME, USER_NAME, PASSWORD);
53         Folder folder = store.getFolder("INBOX");
54         folder.open(Folder.READ_ONLY); 
55         Message[] messages = folder.getMessages();  
56         InternetAddress address;  
57         for (int i = messages.length-1; i >= 0; i--) {  
58             address = (InternetAddress)messages[i].getFrom()[0];  
59             /*
60             if(address != null) {  
61                 System.out.println(address.getPersonal());  
62             }
63             */
64             if (null != address && "秋天的童话".equals(address.getPersonal())) {  
65                 System.out.println("第" + i + "个:" + messages[i].getSubject());  
66                 //转发邮件
67                 forwardMail(session, messages[i]);
68             }  
69         }
70         folder.close(true);  
71         store.close();
72     }
73    
74     public static void main(String[] args) {
75         try {
76             listMail();
77         } catch (Exception e) {
78             e.printStackTrace();
79         }
80     }
81 }
82
83

如果程序写得哪里不完善或者有什么问题可以留言给我!

热点排行