怎样利用spring简单地发送邮件

本文介绍如何使用Spring简化发送不同类型的邮件,包括纯文本、HTML格式和带附件的邮件,并介绍了异步发送邮件的方法及发送邮件时的一些开发经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMTP:简单邮件传输协议,用于发送电子邮件的传输协议.
POP3:用于接收电子邮件的标准协议.
IMAP:互联网消息访问协议,是POP3的替代协议.
这三种协议都有对应的SSL加密传输协议,分别是SMTPS,POP3S,IMAPS

javaMail的基础就不说了,来看看spring简化的发邮件的办法
[color=blue]1、发送简单的文本的邮件[/color]
[code] 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);
}[/code]

设置一下简单的配置文件,如下:
[code] <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>[/code]注意一下:<prop key="mail.smtp.auth">true</prop>该属性必须设置,否则服务器不会对客户端行进行认证。

[color=blue]2、发送HTML类型的邮件[/color]
[code] 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);
}[/code]配置文件和上面的雷同,没有什么差别。
MimeMessageHelper helper = new MimeMessageHelper(msg, false, "utf-8"); 指定编码为utf-8,同时标识为非maritipart


[color=blue]3、发送带附件的邮件[/color][code] 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);
}[/code]


[color=blue]4、可以采用异步的方式来发送邮件[/color]
spring提供了TaskExecutor,它的很多实现类可以异步任务执行的功能。简单的配置如下。
[code]<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"/>[/code]相对应的代码如下:
[code] 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());
}
}
});
}[/code]
[color=blue]5、发送邮件的开发经验:[/color]
对一个web应用系统来说,一般情况下,我们不推荐使用内嵌文件的邮件,用户大可将这些资源文件放在一台web资源服务器上,然后简单地通过URL引用这一些文件。
在实际的应用系统中,如何构造邮件内容以及如何进行邮件发送是两个特别值得关注的问题。一般可以可以通过模板技术和异步发送的方式来解决这两个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值