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 实现简单的邮件发送"旨在展示如何整合这两个框架来完成邮件发送的功能。 首先,Struts是Apache组织的一个开源项目,它提供了一种模型驱动的方式来构建动态Web应用程序。Struts框架通过控制...
Spring Boot整合邮件发送并保存历史发送邮箱 项目描述 项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件...
结合源码阅读和实际应用,开发者可以更深入地理解和掌握Spring框架的邮件发送功能,提升工作效率。对于那些需要发送大量或定期邮件的应用,还可以考虑使用邮件队列服务,如Amazon SES或SendGrid,配合Spring进行集成...
总的来说,Spring框架提供了强大的邮件发送支持,通过`JavaMailSender`接口和相关辅助类,开发者可以方便地实现各种邮件功能,无论是简单的文本邮件还是包含复杂格式和附件的邮件。在实际项目中,确保正确配置SMTP...
Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...
在本场景中,我们将利用Spring来管理JavaMail Sender对象,以便于发送邮件。 #### Velocity模板引擎 Velocity是一个基于Java的模板引擎,它允许开发者通过简单的模板语言来生成HTML网页、XML数据或者普通的文本。在...
通过分析和运行这些文件,我们可以更深入地理解和学习如何在实际应用中利用Spring实现定时发送邮件的功能。 总结来说,Spring的定时任务和邮件服务功能为我们提供了强大的工具,能够自动化执行诸如发送邮件这样的...
下面是一个简单的发送邮件的示例代码: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail...
在本话题中,我们将探讨“Spring高效批量邮件发送”这一技术点,这通常涉及到Spring框架中的邮件服务模块以及如何优化邮件发送的效率。 首先,Spring框架的MailSender接口是处理邮件发送的核心组件。它提供了send()...
通过这种方式,Spring结合Velocity不仅可以帮助你构建结构化的邮件内容,还可以轻松地处理动态数据,使得邮件发送变得更加灵活和高效。记得在实际应用中根据你的SMTP服务器配置和项目需求调整相关代码。希望这个教程...
其中,Spring的JavaMailSenderImpl是用于发送电子邮件的一个重要工具,它使得开发者能够方便地集成邮件服务到他们的应用中。下面将详细介绍这个知识点。 **1. Spring的JavaMailSender接口与JavaMailSenderImpl实现*...
本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
标题 "Spring 使用163发邮件带附件" 涉及到的是在Java开发中,使用Spring框架发送电子邮件,特别是包含附件的邮件。这通常在系统需要自动化通知、报告发送或者用户验证过程中非常常见。Spring提供了JavaMailSender...
在Java开发中,Spring框架提供了一种简单而强大的方式来发送电子邮件。Spring的`JavaMailSender`接口以及其实现类`SimpleMailMessage`和`MailMessage`,使得开发者能够轻松地集成邮件服务到应用程序中。这篇博客()...
Spring Mail是Spring Framework的一个扩展模块,它提供了与JavaMail API的简单集成,用于发送电子邮件。在某些企业环境中,由于网络安全策略,直接访问互联网可能被禁止,这时就需要通过HTTP或SOCKS代理来发送邮件。...
在Spring Boot应用中,利用JavaMailSender发送邮件是一种常见的需求,Spring Boot的`spring-boot-starter-mail`模块为我们提供了方便的自动化配置。首先,我们需要在项目的`pom.xml`文件中引入这个依赖: ```xml ...
总的来说,Spring集成邮件服务使得在Java应用中发送邮件变得简单且灵活。通过合理的配置和编程,你可以实现各种复杂的邮件需求,比如触发式邮件、批量邮件、包含动态内容的邮件等。这个过程涉及的技术和概念对于任何...
总结来说,Spring框架为Java应用程序提供了强大且灵活的邮件发送功能,无论是简单的文本邮件还是复杂的HTML邮件,甚至是包含附件和内嵌资源的邮件,都能通过其高级抽象层轻松实现。同时,配合模板引擎,可以有效地...