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

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

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();
 }
 }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于JavaMail API的简单邮件转发代码示例: ```java import javax.mail.*; import javax.mail.internet.*; public class ForwardEmail { public static void main(String[] args) throws Exception { String host = "smtp.gmail.com"; // 邮件服务器主机名 String username = "your_username@gmail.com"; // 邮箱账户 String password = "your_password"; // 邮箱密码 // 获取Session对象 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); // 邮件转发地址 String forwardTo = "forward_to@example.com"; // 获取原始邮件 Store store = session.getStore("imaps"); store.connect(host, username, password); Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); Message[] messages = inbox.getMessages(); Message originalMessage = messages[messages.length - 1]; // 获取最新的一封邮件 System.out.println("Original Message Subject: " + originalMessage.getSubject()); // 创建转发邮件 Message forwardMessage = new MimeMessage(session); forwardMessage.setFrom(new InternetAddress(username)); forwardMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(forwardTo)); forwardMessage.setSubject("Fwd: " + originalMessage.getSubject()); forwardMessage.setSentDate(originalMessage.getSentDate()); // 将原始邮件内容添加到转发邮件中 Multipart multipart = new MimeMultipart(); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("-------- Original Message --------\n\n"); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(originalMessage.getDataHandler()); multipart.addBodyPart(messageBodyPart); forwardMessage.setContent(multipart); // 发送转发邮件 Transport.send(forwardMessage); System.out.println("Email forwarded successfully!"); } } ``` **注意:** - 该示例使用 Gmail 邮箱服务器作为示例,如果使用其他邮箱服务器需要修改 host 以及端口等参数。 - 该示例中使用了 IMAP 协议来读取原始邮件,如果使用 POP3 协议需要修改代码。 - 该示例中未进行异常处理,实际使用时需要进行适当的异常处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值