Spring框架之发送邮件

一、邮件发送和接收基本原理

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

http://blog.csdn.net/qq_15646957/article/details/52544099

http://blog.csdn.net/ladybai/article/details/50988205

二、JavaMail发送邮件

JavaMail发送邮件:javax.mail.jar提供邮件发送的基础api;javax.activation.jar包含JAF API的实现,发送带附件或者内嵌文件的邮件必须包含此包。

http://wenku.baidu.com/link?url=Do_hvp8ZH7A134lS0W1bAYyymQndmmv2To8Mok-qQlCTf0tJ9GqRR74ach9ctWgbdDxv7hlUD1BckTjxCdBQ2vosT3_otrnkUN7NoohRgYK

三、Spring发送邮件

http://blog.csdn.net/qq_33556185/article/details/51028952

参考文档:

利用Spring发送电子邮件的方法研究_丁振凡.pdf

MailMessage: 为邮件内容, 其中包含邮件接收者的信息,描述了邮件消息模型,可通过简洁的属性设置方法填充邮件消息的各项内容。有两个实现类:SimpleMailMessage 和MimeMailMessage,其中,SimpleMailMessage 只能用于文本格式的邮件,MimeMailMessage 用于发送多用途邮件。

MailSender:通过MailSender 接口的JavaMailSender 子接口定义发送JavaMail 复杂邮件的功能。

JavaMailSenderImpl 是JavaMailSender 的实现类, 它同时支持JavaMail 的MimeMessage 和Spring 的MailMessage 包装的邮件消息。提供的属性用来实现与邮件服务器的连接,常用的属性有:host(邮件服务器地址)、port(默认25)、protocol(默认为smtp)、username、password、defaultEncoding(创建MimeMessage 时采用的默认编码)等。

MimeMessageHelper 该类提供了设置HTML 邮件内容、内嵌的文件以及邮件附件的方法,从而简化了对MimeMessage 的内容设置。

四、如何实现过滤并替代发送?

需要重写JavaMailSenderImpl的doSend()方法,改写其发送逻辑。

需要了解的几个对象:MimeMessage,Transport,Address

五、如何实现异步发送邮件?

http://blog.csdn.net/zheng963/article/details/42521061

同步异步发送问题:JavaMail邮件处理是同步的,即用户触发事件、与SMTP Server通信、服务器返回状态消息、程序结束是单线程内,这时往往因Socket通信、服务器业务处理速度等原因而使得处理时间是个未知数。举个简单的应用实例:若用户在提交注册的同时发送一封激活账户邮件,用户有可能不知道是因为邮件服务器那儿阻塞致半天没有反应而以为注册失败并放弃,这将是失败的设计,但异步方式能解决这些问题。异步方式简单地说就是将邮件处理任务交给另外一个线程,J2EE有两种解决方案,一是种利用JMS,JMS可以实现同步和异步的消息处理,将邮件作为一个异步的消息,就可以实现异步邮件发送。JMS属于J2EE的高级应用,所以对于仅以WEB功能的容器还不支持这种服务,例如Tomcat(当然可以找到插件来解决),由于篇幅限制,本文不再牵涉到新的模块。另一种方案是利用JDK中Executor的支持,JDK 5.0后继版本增加了java.util.concurrent一个强大的并发工具包,它包含了执行器、计时器、锁、线程安全队列、线程任务框架等等。Executor——执行器,它可以将任务的“提交”与“执行”分离解耦,我们的邮件处理任务完全可以借用它实现异步执行。而Spring框架提供了封装。

1.new Thread run()

2.使用异步线程执行器:ThreadPoolTaskExecutor

http://www.cnblogs.com/lic309/p/4186880.html

3.JMS

六、显示的数据内容

模版引擎FreeMarker:

http://www.jb51.net/article/80361.htm

由 Java 程序准备要显示的数据,由FreeMarker 生成页面,通过模板显示准备的数据。

Freemarker 生成静态页面,首先需要使用自己定义的模板页面,这个模板页面可以是最最普通的html,也可以是嵌套freemarker中的 取值表达式, 标签或者自定义标签等等,然后后台读取这个模板页面,解析其中的标签完成相对应的操作, 然后采用键值对的方式传递参数替换模板中的的取值表达式,做完之后 根据配置的路径生成一个新的html页面, 以达到静态化访问的目的。

猜你喜欢

转载自my.oschina.net/u/2939155/blog/1632883