Spring代码实例系列-10:通过Spring Mail发送简单邮件、附件和HTML邮件
2018-01-13 12:13
1296 查看
超级通道:Spring代码实例系列-绪论
本章通过Spring Mail实现了简单邮件、附件和HTML邮件的发送,涉及的主要知识点:
1. Spring mail实现:JavaMailSenderImpl
2. 简单消息:SimpleMailMessage
3. 扩展:MimeMessage
4. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
4. 自定义邮件模板:MailTemplate
本例以163作为发送端邮件
1. 开启SMTP的步骤是:登陆邮箱–>设置–>POP3/SMTP/IMAP–>开启
2. 获取授权码的步骤是:登陆邮箱–>设置–>客户端授权密码–>开启(开启授权码有风险,记得开发完成后关闭此功能)
3. 关于
4. 163邮箱的SMTP服务器: smtp.163.com,端口号是25。
5. 关于邮箱的服务器和端口号,可以参考常用的邮箱服务器(SMTP、POP3)地址、端口
本章通过Spring Mail实现了简单邮件、附件和HTML邮件的发送,涉及的主要知识点:
1. Spring mail实现:JavaMailSenderImpl
2. 简单消息:SimpleMailMessage
3. 扩展:MimeMessage
4. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
4. 自定义邮件模板:MailTemplate
0.开启SMTP服务和获取授权码
通过某个邮箱进行第三方邮件发送时,需要登陆此邮箱开启SMTP服务并获取授权码。本例以163作为发送端邮件
1. 开启SMTP的步骤是:登陆邮箱–>设置–>POP3/SMTP/IMAP–>开启
2. 获取授权码的步骤是:登陆邮箱–>设置–>客户端授权密码–>开启(开启授权码有风险,记得开发完成后关闭此功能)
3. 关于
授权码的说明:通过Java发送邮件是,需要setPassword,这里的Password就是所谓的
授权码,而非邮箱的登陆密码。
4. 163邮箱的SMTP服务器: smtp.163.com,端口号是25。
5. 关于邮箱的服务器和端口号,可以参考常用的邮箱服务器(SMTP、POP3)地址、端口
1.目录结构
project \---src \---main \---java | \---pers | \---hanchao | \---mail | \---App.java | \---MailUtils.java | \---MailTemplate.java \---resources \---spring-config \---spring-mail.xml \---spring-mail.properties
2.App.java
package pers.hanchao.mail; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import javax.mail.MessagingException; /** * <p>简单对Spring mail的应用:简单消息邮件、附件邮件以及html邮件</p> * @author hanchao 2018/1/13 11:36 **/ public class App { public static void main(String[] args) throws MessagingException { ApplicationContext context = new ClassPathXmlApplicationContext("spring-config/spring-mail.xml"); MailUtils mailUtils = (MailUtils) context.getBean("mailUtils"); mailUtils.sendSimpleMail("******@163.com","******@163.com", "简单邮件测试","这是一个简单邮件发送示例:Hello World"); String attachPath = "C:\\Users\\hanchao\\Pictures\\Saved Pictures\\红狼.jpg"; mailUtils.sendMimeMail("******@163.com","******@163.com", "HTML邮件测试","这是一个HTML邮件发送示例:Hello World",MailTemplate.TEMPLATE_TEST,attachPath); } }
3.MailUtils.java
package pers.hanchao.mail; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; /** * <p>简单的邮件工具类,实现了简单邮件、附件和html邮件的发送</p> * @author hanchao 2018/1/13 11:48 **/ @Component public class MailUtils { @Autowired private JavaMailSenderImpl javaMailSender; /** * <p>通过JavaMailSenderImpl.send(SimpleMailMessage)发送简单消息</p> * @author hanchao 2018/1/13 9:56 **/ public void sendSimpleMail(String from,String to,String subject,String message){ SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setFrom(from); simpleMailMessage.setTo(to); simpleMailMessage.setSubject(subject); simpleMailMessage.setText(message); //发送邮件 javaMailSender.send(simpleMailMessage); } /** * <p>通过JavaMailSenderImpl.send(MimeMessage)以及MimeMessageHelper发送HTML内容和附件</p> * @author hanchao 2018/1/13 11:37 **/ public void sendMimeMail(String from,String to,String subject,String message,int template,String attachPath) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //通过MimeMessageHelper进行邮件内容的设置 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true); mimeMessageHelper.setFrom(from); mimeMessageHelper.setTo(to); mimeMessageHelper.setSubject(subject); //发送html内容 mimeMessageHelper.setText(MailTemplate.getText(MailTemplate.TEMPLATE_TEST,message),true); //发送附件 File testAttach = new File(attachPath); if (testAttach.exists()){ mimeMessageHelper.addAttachment("test.jpg",testAttach); } //发送邮件 javaMailSender.send(mimeMessage); } }
4.MailTemplate.java
package pers.hanchao.mail; /** * <p>邮件模板示例</p> * @author hanchao 2018/1/13 11:36 **/ public class MailTemplate { public static final int TEMPLATE_TEST = 1; public static String getText(int templateType,String message){ switch (templateType){ case 1: return "<html>\n" + "<body style=\"background-color:PowderBlue;\">\n" + "<p style=\"font-family:times;color:green;font-size:30px\">\n" + message + "</p>\n" + "</body>\n" + "</html>"; default: return message; } } }
5.spring-mail.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--开启注解--> <context:annotation-config/> <!--开启component扫描--> <context:component-scan base-package="pers.hanchao.*"/> <!--通过spring-mail.properties配置属性--> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="fileEncoding" value="UTF-8"/> <property name="location" value="spring-mail.properties"/> </bean> <!--spring实现的JavaMail--> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="${mail.host}"/> <property name="port" value="${mail.port}"/> <property name="defaultEncoding" value="${mail.encode}"/> <property name="username" value="${mail.username}"/> <property name="password" value="${mail.password}"/> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.smtp.timeout">20000</prop> </props> </property> </bean> </beans>
6.spring-mail.properties
mail.host=smtp.163.com mail.port=25 mail.encode=utf-8 mail.username=******5272@163.com #授权码,而非邮箱的登陆密码 mail.password=******
7.result
7.1.简单邮件
7.2.扩展邮件
相关文章推荐
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- python发送邮件的实例代码(支持html、图片、附件)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- spring简单邮件发送(文本/html/图片/附件)
- python发送邮件的实例代码(支持html、图片、附件)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- python发送邮件的实例代码(支持html、图片、附件)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- 使用spring mail发送html邮件的示例代码
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- 通过Spring Mail Api发送邮件
- 如何通过 ASP 来发送带附件、格式为 HTML 的邮件?下面提供了一个例程.
- Spring MVC代码实例系列-04:通过自定义视图(继承InternalResourceView),实现既能解析Jsp页面又能解析Html页面的目的
- java发送邮件及邮件附件代码实例
- 通过Spring Mail Api发送邮件