疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java进阶Spring 邮件发送


 

 
前言:以前都是直接用Java自带的邮件工具发送邮件,现在Spring帮我们做了封装,提供了更好用更简单的发送邮件工具JavaMailSender
关于邮件服务器的设置就不在这里说了,直接去QQ邮箱设置下就好,下面看下主要的步骤:
 
步骤一、添加发送邮件相关Maven依赖
复制代码
        <!-- Spring 邮件发送 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>                
复制代码
 
 
步骤二、添加相关Spring配置,创建一个spring-mail.xml(如果是Spring-Boot请无视),内容如下:
 
复制代码
<?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 ">
 
    <!-- Spring JavaMailSender -->
    <bean class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.qq.com"></property>
        <!-- 或许你可以用465端口,默认的25不适合 -->
        <property name="port" value="587"/>
        <property name="protocol" value="smtp"/>
        <property name="username" value="******@qq.com"></property>
        <!-- 这里的是你在QQ邮箱发送开通SMTP短信后,获取的授权码 -->
        <property name="password" value="******"></property>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.timeout">25000</prop>
            </props>
        </property>
    </bean>
</beans>
复制代码
 
 
步骤三、创建具体的邮件发送工具类
 
复制代码
/**
 * 基于Spring的JavaMailSender的邮件发送工具类
 * @author simon
 *
 */
@Component
public class EmailSender {
    
    @Autowired
    private JavaMailSender javaMailSender;
    
    private static EmailSender emailSender;
    
    @PostConstruct
    public void init() {
        emailSender = this;
        emailSender.javaMailSender= this.javaMailSender;
    }
    
    /**
     * 发送简单的文本邮件
     * @param sendTo        收件人组
     * @param subject        主题
     * @param content        文本内容
     */
    public static void sendSimpleMessage(String sendFrom, String[] sendTo, String subject, String textcontent) {
        SimpleMailMessage mail = new SimpleMailMessage();
        mail.setFrom(sendFrom);
        mail.setTo(sendTo);
        mail.setSubject(subject);
        mail.setText(textcontent);
        //发送
        emailSender.javaMailSender.send(mail);
    }
    
    /**
     * 发送HTML内容格式的邮件
     * @param sendFrom
     * @param sendTo            收件人组
     * @param subject            主题
     * @param htmlContent        HTML内容
     * @throws Exception
     */
    public static void sendHtmlMessage(String sendFrom, String[] sendTo, String subject, String htmlContent) throws Exception {
        MimeMessage mimeMessage = emailSender.javaMailSender.createMimeMessage();  
        
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
        mimeMessageHelper.setFrom(sendFrom);
        mimeMessageHelper.setTo(sendTo);
        mimeMessageHelper.setSubject(subject);
        // true 表示启动HTML格式的邮件  
        mimeMessageHelper.setText(htmlContent, true);  
 
        // 发送邮件
        emailSender.javaMailSender.send(mimeMessage);
    }
    
}
复制代码
 
 
步骤四:创建单元测试测试发送邮件
 
复制代码
/**
 * 邮件发送测试类
 * 
 * @author simon
 *
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class EmailSenderTest {
 
    @Test
    public void testSend() throws Exception {
        String sendFrom = "******@qq.com";
        String[] sendTo = {"******@qq.com"};
        String subject = "Spring自带JavaMailSender发送的HTML邮件";
        StringBuilder htmlContent = new StringBuilder()
                .append("<html>")
                .append("<head>")
                .append("<title>")
                .append("Spring自带JavaMailSender发送的HTML邮件")
                .append("</title>")
                .append("</head>")
                .append("<body>")
                .append("您好!陌生人<p/>")
                .append("</body>")
                .append("</html>");
        
        EmailSender.sendHtmlMessage(sendFrom, sendTo, subject, htmlContent.toString());
        System.out.println("邮件发送成功.");
    }
复制代码
 
 
OK,到这里全部的步骤就结束了,是不是比Java Mail简单方便很多哉,赶紧自己动手试试吧!