最近要做一个邮件转发功能,看了好多blog,都是接受邮件,再解析邮件内容,再组装成新的邮件发出!

我按照这个不够,不错!邮件发出去了。但是好麻烦啊,接受邮件是个Message,发送邮件也是个Message,是不是可以可以修修改改直接用啊!

但是我有不想修改原邮件,怎么办。copy啊!

发送邮件需要那些基本内容啊?

如下:

forward.setSubject(message.getSubject());
forward.setFrom(new InternetAddress("XXX"));
forward.setRecipient(Message.RecipientType.TO, new InternetAddress("OOO"));
forward.setSentDate(new Date());
forward.setContent(message.getContent(), message.getContentType());

对就是这些内容,而这些内容都可以直接从原邮件中获得,特别是Content这个字段,不需要解析这个Object具体是啥,直接拿来用就行了!

转发是不是很简单。

实用demo:

public void forwardMail(Session session, Message message) throws MessagingException, IOException {
Message forward = new MimeMessage(session);
forward.setSubject(message.getSubject());
forward.setFrom(new InternetAddress("xxx@126.com"));
forward.setRecipient(Message.RecipientType.TO, new InternetAddress("ooo@126.com"));
forward.setSentDate(new Date());
forward.setContent(message.getContent(), message.getContentType()); Transport smtp = session.getTransport("smtp");
smtp.connect();
smtp.sendMessage(forward, forward.getAllRecipients());
smtp.close();
}

最后附上,接受邮件,发送邮件的属性设置:(有些邮箱的用户名不带后缀,只用@前面的部分就行了)

        Properties properties = new Properties();
// 发送邮件使用的协议
properties.setProperty("mail.transport.protocol", sendProtocol);
properties.setProperty("mail.smtp.host", mailHost);
properties.setProperty("mail.smtp.timeout", "20000");
properties.setProperty("mail.smtp.connectiontimeout", "20000");
// 接收邮件使用的协议
properties.setProperty("mail.store.protocol", storeProtocol);
properties.setProperty("mail.imap.host", mailHost);
properties.setProperty("mail.imap.starttls.enable", "true"); Session session = Session.getDefaultInstance(properties);
// session.setDebug(true);
Store store = session.getStore(storeProtocol);
// 接受邮件
store.connect(mailHost, user, password);
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
//使用完关闭资源
folder.close(false);
store.close(); // 发送邮件
Transport smtp = session.getTransport("smtp");
smtp.connect();
smtp.sendMessage(forward, forward.getAllRecipients());
smtp.close();

JavaMail转发邮件的更多相关文章

  1. java中javamail收发邮件实现方法

    概述 1.邮件相关的标准 厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: SMTP(Simple Mail Transfer Protocol) :即简单邮 ...

  2. 使用JavaMail创建邮件发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  3. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  4. (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...

  5. 基于JavaMail开发邮件发送器工具类

    基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...

  6. 使用JavaMail创建邮件和发送邮件

    参考https://www.cnblogs.com/xdp-gacl/p/4216311.html,写的真好,知识在于分享,备份留着看 一.RFC882文档简单说明 RFC882文档规定了如何编写一封 ...

  7. Spring MVC+javamail实现邮件发送

    Spring MVC+javamail实现邮件发送 开启邮箱的POP3/SMTP服务(这里以QQ邮箱举例) 设置 --> 账户 -- > 开启POP3/STMP服务,然后得到一个授权码. ...

  8. Springboot+Javamail实现邮件发送

    Springboot+Javamail实现邮件发送 使用的是spring-context-support-5.2.6.RELEASE.jar里的javamail javamail 官方文档:javam ...

  9. javaMail创建邮件和发送邮件总结

    (注: 本文是参考http://www.cnblogs.com/xdp-gacl/p/4216311.html. 感谢博主的精彩的描述) 一, 前期的准备 1, 导入 mail.jar 二, 操作步骤 ...

随机推荐

  1. JS判断PC 手机端显示不同的内容

    方法一: function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android ...

  2. react-native-login-redux

    项目地址如下 https://github.com/agunbuhori/react-native-login-redux 先看页面 ```js // 还有中英文切换 //src/global.js ...

  3. Sublime中输入中文的解决方案

    之前系统用的输入法是 ibus,在sublime中无法使用, 可能是不支持该输入法. 然后改用 fcitx,切换输入法之后要重启系统才可以生效, 启动之后就可以使用中文了.

  4. R是用于统计分析、绘图的语言和操作环境

    R是一套完整的数据处理.计算和制图软件系统.其功能包括:数据存储和处理系统:数组运算工具(其向量.矩阵运算方面功能尤其强大):完整连贯的统计分析工具:优秀的统计制图功能:简便而强大的编程语言:可操纵数 ...

  5. NOIP2016提高A组模拟9.28总结

    这次三道题都是可以AC的. 每道题思路都正确,但每道题都有细节没有注意. 第一题 1.没注意系数为1时可以省略系数: 2.没注意在第一项处理常数后,不能输出+号. 导致丢失20分:一定要多出特殊数据, ...

  6. PyCharm2019 永久激活

    <!-- 2019激活码 2019-06-21新更新 --> D00F1BDTGF-eyJsaWNlbnNlSWQiOiJEMDBGMUJEVEdGIiwibGljZW5zZWVOYW1l ...

  7. Mybatis自查询递归查找子菜单

    之前写过 java从数据库读取菜单,递归生成菜单树 今天才发现mybatis也可以递归查询子菜单 先看一下数据库 主键id,名称name,父id,和url 设计菜单类 public class Men ...

  8. TZOJ 4359: Partition the beans (二分)

    描述 Given an N x N square grid (2 <= N <= 15) and each grid has some beans in it. You want to w ...

  9. [linux]vmware中linux虚拟机扩容 标签: vmware虚拟机linux 2016-09-05 08:03 315人阅读 评

    扩容原因 现阶段,虚拟机的标配都是1G内存和20G硬盘,大部分时候是够用的,但是也会出现虚拟机里面东西放多了硬盘不够用的情况,这种情况下,除了清理垃圾,另外就只能给虚拟机扩容了.因为window扩容相 ...

  10. css技巧——垂直居中

    1.父元素确定的单行垂直居中 通过设置父元素的 height 和 line-height 高度一致来实现的. 2.父元素确定的多行垂直居中 父元素高度确定的多行文本.图片.块状元素的竖直居中的方法有两 ...