最近要做一个邮件转发功能,看了好多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. python 切片索引

  2. 求x!在k进制下后缀零的个数(洛谷月赛T1)

    求x!在k进制下后缀和的个数 20分:     求十进制下的x!后缀和的个数 40分: 高精求阶乘,直接模拟过程 (我不管反正我不打,本蒟蒻最讨厌高精了) 60分     利用一个定理(网上有求x!在 ...

  3. Kubernetes 调度器实现初探

    Kubernetes 调度器 Kubernetes 是一个基于容器的分布式调度器,实现了自己的调度模块.在Kubernetes集群中,调度器作为一个独立模块通过pod运行.从几个方面介绍Kuberne ...

  4. SiteMesh:一个优于Apache Tiles的Web页面布局、装饰框架

    一.SiteMesh项目简介 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容 ...

  5. Ceph 之 Background on http frontends

    Background on http frontends -civetweb frontend --thread per connection, requires a lot of threads - ...

  6. 浅谈JavaScript的面向对象和它的封装、继承、多态

    写在前面 既然是浅谈,就不会从原理上深度分析,只是帮助我们更好地理解... 面向对象与面向过程 面向对象和面向过程是两种不同的编程思想,刚开始接触编程的时候,我们大都是从面向过程起步的,毕竟像我一样, ...

  7. 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...

  8. Kubernetes Ingress日志分析入门

    本文主要介绍如何基于日志服务构建Kubernetes Ingress日志分析平台,并提供一些简单的动手实验方便大家快速了解日志服务相关功能. 部署Ingress日志方案 登录容器服务管理控制台. 将上 ...

  9. scala2.11读取文件

    1.读取行 要读取文件的所有行,可以调用scala.io.Source对象的getLines方法: import scala.io.Source val source = Source.fromFil ...

  10. FastAdmin 开发第 4 天:初试命令行

    FastAdmin 最强大的是命令行 先从 test 表开始. 在 FastAdmin 默认有一个 test 表格,用于命令行 crud 测试. 如何开始? 只需要在项目命令行中输入以下命令就会自动生 ...