zoukankan      html  css  js  c++  java
  • spring发送邮件

    Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender,和值对象SimpleMailMessage,它封装了简单邮件的属性如fromto,ccsubject,text。 包里还包含一棵以MailException为根的checked Exception继承树,它们提供了对底层邮件系统异常的高级别抽象。 要获得关于邮件异常层次的更丰富的信息,请参考Javadocs。

    为了使用JavaMail中的一些特色, 比如MIME类型的信件, Spring提供了MailSender的一个子接口, 即org.springframework.mail.javamail.JavaMailSender。Spring还提供了一个回调接口org.springframework.mail.javamail.MimeMessagePreparator,  用于准备JavaMail的MIME信件。

    这里简单的介绍了如何使用spring发送各种形式的邮件以及配置。

    一,Spring配置发送邮件

    1,配置邮件发送信息

    #sys.mail.protocol=smtp
    sys.mail.transport.protocol=smtp
    sys.mail.host=smtp.exmail.qq.com
    sys.mail.sysEmailAddress=***@***.com
    sys.mail.password=***
    sys.mail.debug=true
    sys.mail.smtp.auth=true
    sys.mail.smtp.timeout=25000
    sys.mail.smtp.port=465
    sys.mail.smtp.ssl.enable=true
    sys.mail.toSet=****,***,***
    

      2,spring配置信息

    <?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:util="http://www.springframework.org/schema/util"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    
    
        <!--	邮件发票配置		-->
        <util:properties id="mailProp" location="classpath:config/mail.properties"/>
    
        <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean" id="configProperties">
            <property name="locations">
                <list>
                    <value>classpath:config/mail.properties</value>
                </list>
            </property>
        </bean>
    
        <!-- 邮件发送   -->
        <bean class="org.springframework.mail.javamail.JavaMailSenderImpl" id="mailSender">
            <property name="host" value="#{mailProp['sys.mail.host']}"></property>
            <property name="username" value="#{mailProp['sys.mail.sysEmailAddress']}"></property>
            <property name="password" value="#{mailProp['sys.mail.password']}"></property>
            <property name="protocol" value="#{mailProp['sys.mail.transport.protocol']}"></property>
            <property name="defaultEncoding" value="UTF-8"></property>
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.debug">#{mailProp['sys.mail.debug']}</prop>
                    <prop key="mail.smtp.auth">#{mailProp['sys.mail.smtp.auth']}</prop>
                    <prop key="mail.smtp.timeout">#{mailProp['sys.mail.smtp.timeout']}</prop>
                    <prop key="mail.smtp.port">#{mailProp['sys.mail.smtp.port']}</prop>
                    <prop key="mail.smtp.ssl.enable">#{mailProp['sys.mail.smtp.ssl.enable']}</prop>
                    <prop key="mail.transport.protocol">#{mailProp['sys.mail.transport.protocol']}</prop>
                </props>
            </property>
        </bean>
    </beans>
    

      3,注入发送配置信息

    4,发送邮件

    /**
         * 发送邮件
         */
        public void sendMail(JavaMailSender mailSender, String from, Set<String> set, String subject, String content, Boolean isHtml, Boolean isAttachment, Map<String, File> attachments) throws Exception {
    
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, isAttachment);
    
            //添加发送者
            helper.setFrom(from);
    
    //                Set<String> toSet = simpleEmail.getToSet();
            //添加接收者
            helper.setTo(set.toArray(new String[set.size()]));
    
            //添加主题
            helper.setSubject(subject);
            //添加正文
            helper.setText(content, isHtml);
    
            //添加附件
            if (isAttachment && attachments != null) {
                for (Map.Entry<String, File> attach : attachments.entrySet()) {
                    helper.addAttachment(attach.getKey(), attach.getValue());
                }
            }
    
            JavaMailSenderImpl javaMailSender = (JavaMailSenderImpl) mailSender;
        ///避开认证问题 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); javaMailSender.getJavaMailProperties().put("mail.smtp.ssl.socketFactory", sf); javaMailSender.send(message); // 发送 }

      二,javaMail发送工具类

    package com.ehaoyao.jobcenter.order.utils;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.Address;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Date;
    import java.util.Properties;
    
    /**
     * com.ehaoyao.utils
     * 发送邮件工具类
     *
     * @author PF
     * @create 2017-10-12 17:34
     **/
    
    public class EmailUtil {
        public static void sendMail(String fromMail, String user, String password, String toMail, String mailTitle, String mailContent) throws Exception {
            Properties props = new Properties();
            // 开启debug调试
            props.setProperty("mail.debug", "true");
            // 发送服务器需要身份验证
            props.setProperty("mail.smtp.auth", "true");
            // 设置邮件服务器主机名
            props.setProperty("mail.host", "smtp.qq.com");
            // 发送邮件协议名称
            props.setProperty("mail.transport.protocol", "smtp");
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            props.put("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);
            Session session = Session.getInstance(props);
            Message msg = new MimeMessage(session);
            msg.setSubject(mailTitle);
            msg.setText(mailContent);
            msg.setFrom(new InternetAddress(fromMail));
            Transport transport = session.getTransport();
            transport.connect("smtp.exmail.qq.com", fromMail, password);
    
            transport.sendMessage(msg, new Address[]{new InternetAddress(toMail)});
            transport.close();
        }
    
        public static void main(String[] args) throws Exception {
            EmailUtil.sendMail("***@***.com","ces","***","***@qq.com","测试","测试");
        }
    }
    

      

  • 相关阅读:
    Json对象处理.将对象处理成dic数组.
    asp.net core 创建允许跨域请求的api, cors.
    (转载)dotnet core 中文乱码 codepages
    (转载)Memcached和Redis简介
    发送Json数据,WebApi查看时为Null的问题(已解决)
    Vs2017获取Git空仓库后创建解决方案及项目无法推送,推送失败的问题.
    前端:Jquery 处理同一Name的Radio组时,绑定checked属性异常的问题.(已解决)
    Vs2015 本地git获取的代码目录文件修改后,启动提示error:Unable to start program “C:Program Filesdotnetdotnet.exe” 已解决.
    .net core 发布后提示Start error
    .net core vs2015 vs2017打开后errpr
  • 原文地址:https://www.cnblogs.com/wlsblog/p/7778891.html
Copyright © 2011-2022 走看看