邮箱发送工具类

注册邮箱

去163邮箱(或其他邮箱)注册一个邮箱,并开启SMTP授权码。

程序

需要注意的是,由于阿里云服务器不让使用默认的25端口,所以会出现Windows下测试发送邮件成功,Linux服务器下发送邮件却出错的问题(broke pipe、timeout、can not connect等)。解决办法是使用带SSL的465端口。

参考链接:

pom依赖

        
            org.springframework.boot
            spring-boot-starter-mail
           

application.properties

spring.mail.host=smtp.exmail.qq.com
spring.mail.password=123456
spring.mail.port=587
[email protected]
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true

代码如下

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.*;

     /** * 邮件发送工具类 */ 
public class EmailUtils { 

    // (自定义)邮件发送者
    @Value("${spring.mail.from}")
    private String email_from;
   
    @Autowired
    private JavaMailSender emailSender  
     /** 
     * 发送邮件的方法 
     * @param toUser :收件人 
     * @param title :标题 
     * @param content :内容 
     */ 
     public static void sendMail(String toEmail,String title,String content) throws Exception {
      // 你自己的邮箱和授权码 
      final String username = "[email protected]";
      //自己的邮箱 final String password = "xxxxxxxxxx";
      
      //授权码,需要登录163邮箱,在设置里设置授权码。授权码用于替代密码
      
      
       MimeMessage msg = emailSender.createMimeMessage();
            //开启带附件true
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(msg,true);
//          MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(msg);

            File file = new File(poiUtills.initOutputDir()+File.separator +"附件.xlsx");

            mimeMessageHelper.addAttachment("附件.xlsx",file);
            //设置发送内容
            mimeMessageHelper.setFrom(email_from);
            if (toEmail.contains(",")) {
                mimeMessageHelper.setTo(toEmail.split(","));
            } else {
                mimeMessageHelper.setTo(toEmail);
            }
            mimeMessageHelper.setSubject(title);
            String message = "你好:

这是"+etl_date+"日的监控告警邮件,请查看附件详细信息。
"; // mimeMessageHelper.setText(message, true); mimeMessageHelper.setText(content); emailSender.send(msg); }

你可能感兴趣的:(邮箱发送工具类)