SMTP:简单邮件传输协议,用于发送电子邮件的传输协议.
POP3:用于接收电子邮件的标准协议.
IMAP:互联网消息访问协议,是POP3的替代协议.
这三种协议都有对应的SSL加密传输协议,分别是SMTPS,POP3S,IMAPS
javaMail的基础就不说了,来看看spring简化的发邮件的办法
1、发送简单的文本的邮件
private JavaMailSender sender;
public void setSender(JavaMailSender sender) {
this.sender = sender;
}
public void sendSimpleMail(int userId) {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("wuguangcheng@gmail.com");
msg.setTo("wuguangcheng@gmail.com");
msg.setReplyTo("wuguangcheng@gmail.com");
msg.setCc("wuguangcheng@163.com");
msg.setSubject("注册成功");
msg.setText("您在javaeye已经注册成功!您的用户ID为:" + userId);
sender.send(msg);
}
设置一下简单的配置文件,如下:
<bean id="sender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com.cn" />
<property name="username" value="wuguangcheng" />
<property name="password" value="spring" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
</props>
</property>
</bean>
注意一下:<prop key="mail.smtp.auth">true</prop>该属性必须设置,否则服务器不会对客户端行进行认证。
2、发送HTML类型的邮件
public void sendHtmlMail(int userId) throws MessagingException {
MimeMessage msg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, false, "utf-8");
helper.setFrom("wuguangcheng@gmail.com");
helper.setTo("wuguangcheng@gmail.com");
helper.setSubject("注册成功");
String htmlText = "<html><head>"
+ "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"
+ "</head><body>" + "您在javaeye已经注册成功!您的用户ID为:"
+ "<font size='20' size='30'>" + userId + "</font>"
+ "<body></html>";
helper.setText(htmlText, true);
sender.send(msg);
}
配置文件和上面的雷同,没有什么差别。
MimeMessageHelper helper = new MimeMessageHelper(msg, false, "utf-8"); 指定编码为utf-8,同时标识为非maritipart
3、发送带附件的邮件 public void sendAttachmentMail() throws Exception {
MimeMessage msg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");//第二个参数为true,标识为maritipart类型,可以发送附件
helper.setFrom("wuguangcheng@gmail.com");
helper.setTo("wuguangcheng@gmail.com");
helper.setSubject("注册成功");
helper.setText("欢迎访问javaeye!");
ClassPathResource file1 = new ClassPathResource("bbt.zip");
helper.addAttachment("file01.zip", file1.getFile());
ClassPathResource file2 = new ClassPathResource("file.doc");
helper.addAttachment("file02.doc", file2.getFile());
sender.send(msg);
}
4、可以采用异步的方式来发送邮件
spring提供了TaskExecutor,它的很多实现类可以异步任务执行的功能。简单的配置如下。
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10"/>
<property name="maxPoolSize" value="30"/>
</bean>
<bean id="mailService"
class="com.baobaotao.service.MailService">
<property name="sender" ref="sender" />
<property name="freeMarkerConfigurer" ref="freeMarkerConfigurer"/>
<property name="taskExecutor" ref="taskExecutor"/>
相对应的代码如下:
private TaskExecutor taskExecutor;
public void setTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void sendAsyncMail(final int userId) {
taskExecutor.execute(new Runnable() {
public void run() {
try {
sendTemplateMail(userId);
System.out.println("邮件发送成功!");
} catch (Exception e) {
System.out.println("邮件发送失败!,异常信息:" + e.getMessage());
}
}
});
}
5、发送邮件的开发经验:
对一个web应用系统来说,一般情况下,我们不推荐使用内嵌文件的邮件,用户大可将这些资源文件放在一台web资源服务器上,然后简单地通过URL引用这一些文件。
在实际的应用系统中,如何构造邮件内容以及如何进行邮件发送是两个特别值得关注的问题。一般可以可以通过模板技术和异步发送的方式来解决这两个问题。
分享到:
相关推荐
struts spring 实现简单的邮件发送, 下载后加入相应的lib即可使用(由于权限,我上传不上来)。
Spring实现各种邮件的发送 简单配置就可发送邮件
Spring Boot整合邮件发送并保存历史发送邮箱 项目描述 项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件...
Spring 封装的JavaMail,使邮件发送变的相当简单,我通过Spring的邮件发送实现了发纯文本形的内容,HTMl,带附件,带图片等示例代码,并自行测试过.希望对初学者有帮助
它包括了发送电子邮件的主要接口MailSender,和值对象SimpleMailMessage,它封装了简单邮件的属性如from, to,cc, subject,text。 包里还包含一棵以MailException为根的checked Exception继承树,它们提供了对底层...
项目很小,去除了所有不需要的代码和jar,该项目是maven项目,仅用来定时发送邮件,可发送多人。增加这个即可:message.addRecipient(Message.RecipientType.TO, new InternetAddress("对方帐号"));
Spring编写发送邮件程序,通过spring框架编写的邮件发送,代码简单实用。
整个项目就是一个动态调用发送邮件的模版,包含设置动态触发时间的xml,设置邮件发送信息的xml,设置邮件显示的模版template.vm。 使用技术: 1 使用SchedulerFactoryBean+CronTriggerBean的Spring Quarter动态设置...
NULL 博文链接:https://yanxiansheng.iteye.com/blog/1533419
Spring整合JavaMail发送qq邮件,极简单的例子。看完就会。。。
SpringBoot中整合Mail实现简单邮件发送示例代码
spring邮件抽象层详解,简单的方式发送email
程序代码(不含jar) 博文链接:https://sosuny.iteye.com/blog/465522
主要为大家详细介绍了Spring实现邮件发送功能,简单的发送邮件工具JavaMailSender使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。 邮件协议 下面先简单了解一下常见的...
SpringBoot之发送邮件五种简单示例
NULL 博文链接:https://kanpiaoxue.iteye.com/blog/2176342
包含发送简单邮件、附件邮件、通过velocity模板发送邮件的工具类 所需要的jar文件 velocity-tools-1.4.jar velocity-tools-view-1.4.jar velocity-1.6.2.jar velocity-1.6.2-dep.jar htmlparser.jar mail.jar spring...
一个简单的Struts+Spring+Hibernate的登录模块的代码,含数据库代码和部分简单说明(适合刚接触Struts+Spring+Hibernate框架的开发者); 本例采用myEclipse6.0.1和tomcat6开发,可直接导入myeclipse工程运行...
12. spring-messaging-4.1.1.RELEASE.jar 消息发送 13. spring-orm-4.1.1.RELEASE.jar 14. spring-oxm-4.1.1.RELEASE.jar Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换 15. spring-test-4.1.1....