springboot发送163邮箱

1、以下为163邮箱发送最基本的配置:以下仅需要改的就是密码,到163官网去获取自己的password

# 邮箱服务器地址
spring.mail.host=smtp.163.com
# 发送方的邮箱
spring.mail.username=c13343533950@163.com
# 发送方的授权码,邮箱设置里面生成的授权码,这个不是真实的密码
spring.mail.password=UHUHMSCSSYNIN----
spring.mail.port=465
spring.mail.protocol=smtps
# 邮件编码
spring.mail.default-encoding=UTF-8

获取密码:

 

 

2、发送邮箱工具类

package com.example.testj.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.io.UnsupportedEncodingException;

@Component
public class SendEmailUtil {
    private String from = "c13343533950@163.com"; // 发送发邮箱地址

    @Autowired
    private JavaMailSender mailSender;

    /**
     * 发送纯文本邮件信息
     *
     * @param to      接收方
     * @param subject 邮件主题
     * @param content 邮件内容(发送内容)
     */
    public void sendMessage(String to, String subject, String content) {
        // 创建一个邮件对象
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setFrom(from); // 设置发送发
        msg.setTo(to); // 设置接收方
        msg.setSubject(subject); // 设置邮件主题
        msg.setText(content); // 设置邮件内容
        // 发送邮件
        mailSender.send(msg);
    }

    /**
     * 发送带附件的邮件信息
     *
     * @param to      接收方
     * @param subject 邮件主题
     * @param content 邮件内容(发送内容)
     * @param files 文件数组 // 可发送多个附件
     */
    public void sendMessageCarryFiles(String to, String subject, String content, File[] files) {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //解决附件文件名称过长乱码问题
        System.setProperty("mail.mime.splitlongparameters","false");
        try {
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
            helper.setFrom(from); // 设置发送发
            helper.setTo(to); // 设置接收方
            helper.setSubject(subject); // 设置邮件主题
            helper.setText(content,true); // 设置邮件内容
            if (files != null && files.length > 0) { // 添加附件(多个)
                for (File file : files) {
                    helper.addAttachment(MimeUtility.encodeWord(file.getName(), "utf-8", "B"), file);
                }
            }
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        // 发送邮件
        mailSender.send(mimeMessage);
    }
    /**
     * 发送带附件的邮件信息
     *
     * @param to      接收方
     * @param subject 邮件主题
     * @param content 邮件内容(发送内容)
     * @param file 单个文件
     */
    public void sendMessageCarryFile(String to, String subject, String content, File file) {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //解决附件文件名称过长乱码问题
        System.setProperty("mail.mime.splitlongparameters","false");
        try {
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
            helper.setFrom(from); // 设置发送发
            helper.setTo(to); // 设置接收方
            helper.setSubject(subject); // 设置邮件主题
            helper.setText(content,true); // 设置邮件内容
            helper.addAttachment(MimeUtility.encodeWord(file.getName(), "utf-8", "B"), file); // 单个附件
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        // 发送邮件
        mailSender.send(mimeMessage);
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }
}

3、发送测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class Email {

    @Autowired
    private SendEmailUtil emailUtil;


    @Test
    public void sendStringEmail() {
        // 测试文本邮件发送(无附件)
        String to = "1029142064@qq.com"; // 接收邮箱地址
        String title = "附件邮箱测试";
        String content = "文本邮件发送测试";
        File file = new File("E:\\logo.jpg");
        //emailUtil.sendMessage(to, title, content); //无附件
        emailUtil.sendMessageCarryFile(to, title, content, file);//带一个附件
    }

}

 

posted @ 2022-12-19 16:26  曹伟666  阅读(485)  评论(0编辑  收藏  举报