Spring mail 邮件服务及其参数配置

时间:2024-03-08 10:20:23

一个Web 系统通常会少不了邮件服务的,比如用于注册,密码找回,订单提醒等应用场景。spring 封装了一个简单易用的关于邮件发送的工具类JavaMailSenderImpl 。

系统要提供邮件服务,那得需要一个邮件服务器,用于发送和回复邮件。如果有条件专门弄一个邮件服务器那固然是最好的,但是也可以简单的使用163或者qq提供的邮件服务。

例如注册了一个example@163.com的邮箱账号,在网站上选设置 然后勾选 POP3/SMTP服务,然后保存。点击左侧导航栏中的 客户端授权密码 ,开启客户端授权码,重置授权码,你会收到一个授权码的短信,这个授权码就是用来第三方客户端登录的密码
要做四件事
1:设置邮件服务器有公司的就使用公司的,没有公司的就使用163或者qq提供的邮件服务
2:引入需要的夹包
3:配置需要的配置文件
4:写测试类测试

:设置邮件服务器有公司的就使用公司的,没有公司的就使用163或者qq提供的邮件服务 ,这里用网易举例

 

 


二。首先需要的夹包
spring-context-support-3.2.3.RELEASE.jar
mail-1.4.7.jar
三。需要的配置文件---在applicationContext.xml中配置
 <!-- 使用Spring封装的Mail Sender发送邮件 -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.163.com"/> <!-- 发送方的服务器   网易提供的,这里是定死的 -->
       <!-- <property name="host" value="smtp.qq.com"/> --><!-- 发送方的服务器   腾讯qq提供的 -->
         <property name="port"><!-- 发送方服务器对应的端口,默认的25 -->
            <value>25</value>
        </property>
        <property name="username" value="136....3261@163.com"/><!-- 发送方服务器对应的邮箱账号 ,你自己的网易邮箱,发邮件就是从这个设定的邮箱向外发送-->
        <property name="password" value="------------"/><!-- 发送方服务器对应的邮箱密码,勾选 POP3/SMTP服务后的授权码 -->
        <property name="javaMailProperties">
              <props>
                <prop key="mail.smtp.auth">true</prop><!-- 是否验证密码 ,true代表验证-->
              </props>
        </property>
    </bean>
四。写方法测试
首先是service
====================开始=============================================
@Service
public class MaileServiceimpl {
    @Autowired
    private JavaMailSender mailSender;
    /*
     * 单一发送
     * mailTo:收件人的邮箱
     * subject:邮件表头信息
     * mailBody:邮件内容
     * isHtml:true标识设定html格式
     */
    public void sendMail(String mailTo, String subject, String mailBody,boolean isHtml) {
        MimeMessage mailMessage = mailSender.createMimeMessage(); 
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, "utf-8");
           
            try {
                messageHelper.setTo(mailTo);
                messageHelper.setSubject(subject);
                messageHelper.setText(mailBody, isHtml);
                messageHelper.setFrom("13671183261@163.com");//发件邮箱,要和配置文件中的一样
                mailSender.send(mailMessage);
            } catch (MessagingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
    /**
     * 批量发送
     */
    public void sendMailToMany(String[] mailTo, String subject, String mailBody,boolean isHtml) {
       
        MimeMessage mailMessage = mailSender.createMimeMessage(); 
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, "utf-8");
        try {
            messageHelper.setTo(mailTo);
            messageHelper.setSubject(subject);
            messageHelper.setText(mailBody, isHtml);
            messageHelper.setFrom("1228870598@qq.com");//发件邮箱要和配置文件中的一样
            mailSender.send(mailMessage);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
      
    }
}
====================结束===================
然后是controller
====================开始===================
    @RequestMapping(value="/sendemail",
        produces="application/json;charset=utf-8")
    @ResponseBody
    public String sendEmail(){
        //收件人邮箱
        String mailTo="1228870598@qq.com";
        //邮件表头信息
        String subject = "测试发送邮件";
        //邮件内容
        String mailBody = "蓝星好久不见!";
        //true
        boolean isHtml = true;
        maileService.sendMail(mailTo, subject, mailBody, isHtml);
        System.out.println("发送成功!!!!!!!!");
        return "true";
    }
====================结束==================
本框架使用的是spring+mybatis+springMVC
只是发送普通的文本邮件
http://docs.spring.io/spring/docs/2.0.x/javadoc-api/org/springframework/mail/javamail/MimeMessageHelper.html#setSubject(java.lang.String)