java mail使用

java mail 使用

配置文件

使用的springboot框架,配置文件为application.yml
mail:
  host: smtp.163.com   #发送邮件配置地址
  port: 25  #端口号
  username: XXXXX@163.com   #邮箱登录账号
  oauthCode: xxxxx    #邮箱第三方登录授权码,可在对应邮箱官网获取(163的在mail.163.com-->设置)
  timeOut: 15000  #超时时间
  mailFrom: XXXXX@163.com  #必须和邮箱登录账号相同,否则会报 554DT:SUM 
  personal: Mochi  #发件人署名
  subject: 测试发送  #主题  可有可无,这里指定的可以是默认的
  html: Content #内容

maven/gradle依赖

implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'javax.mail:mail:1.4.3'

配置实体类

@Data
@Component
public class MailConfigure{
	@Value("${mail.host}")	
	public static String host;
	@Value("${mail.port}")
	public static int port;
	@Value("${mail.username}")
	public static String username;
	@Value("${mail.oauthCode}")
	public static String oauthCode;
	@Value("${mail.timeOut}")
	public static String timeOut;
	@Value("${mail.mailFrom}")
	public static String mailFrom;
	@Value("${mail.personal}")
	public static String personal;
}

发送工具类

@Component
public class MailUtils{
    static Log logger = LogFactory.getLog(MailUtils.class);
    private static final String HOST = MailConfigure.host;
    private static final Integer PORT = MailConfigure.port;
    private static final String USERNAME = MailConfigure.username;
    private static final String OAUTHCODE= MailConfig.oauthCode;
    private static final String EMAILFORM= MailConfigure.emailForm;
    private static final String TIMEOUT= MailConfigure.timeOut;
    private static final String PERSONAL= MailConfigure.personal;
    private static JavaMailSenderImpl mailSender = createMailSender();

  
    private static JavaMailSenderImpl createMailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(HOST);
        sender.setPort(PORT);
        sender.setUsername(USERNAME);
        sender.setPassword(OAUTHCODE);
        sender.setDefaultEncoding("UTF-8");
        Properties prop = new Properties();
        prop.setProperty("mail.smtp.timeout", TIMEOUT);
        prop.setProperty("mail.smtp.auth", "true");
        //使用ssl发送,此处不一定支持,若不支持会报Unrecognized SSL message, plaintext connection
        //p.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
        prop.setProperty("mail.smtp.starttls.enable", "true");
        sender.setJavaMailProperties(prop);
        return sender;
    }

    /*
     * 发送邮件
     * @param to      收件人
     * @param subject 主题
     * @param html    发送内容
     * @throws Exception 异常
     */
    public static void sendMail(String to, String subject, String html) throws Exception {
        logger.info("邮件发送...");
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");//设置编码格式,否则会乱码
        messageHelper.setFrom(EMAILFORM, PERSONAL);
        messageHelper.setTo(to);
        messageHelper.setSubject(subject);
        messageHelper.setText(html, true);
        mailSender.send(mimeMessage);
    }

    /**
     * 发送带附件的邮件
     * @param to       收件人
     * @param subject  主题
     * @param html     发送内容
     * @param filePath 附件路径
     * @throws Exception 异常
     */
    public static void sendMailWithFile(String to, String subject, String html, String filePath) throws Exception {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        messageHelper.setFrom(EMAILfROM, PERSONAL);
        messageHelper.setTo(to);
        messageHelper.setSubject(subject);
        messageHelper.setText(html, true);
        FileSystemResource file = new FileSystemResource(new File(filePath));
        String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
        messageHelper.addAttachment(fileName, file);
        mailSender.send(mimeMessage);
    }

发送测试类

try {
  //QQ邮箱收不到邮件可以在辣鸡邮件查找,QQ邮箱收件较慢,没找到原因--||
  //无意义邮件不要发送过多/过频繁,否则会报554 DT:SPM  爱玩的我给好友发了也就30几封,就被限制了好几个小时QwQ
  MailUtils.sendMail("xxxxx@qq.com", "测试邮件", "测试发送");
  MailUtils.sendMail("xxxxx@163.com", "测试邮件", "测试发送");
} catch (Exception e) {
   logger.error("邮件发送异常" + e);
   }

163异常描述

163邮箱企业退信错误码 http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html
附163邮箱企业退信错误码描述,一定不要无意义邮件发太多QwQ,被限制了一封发不出去好难受…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值