用 springBoot发送邮件

1 pom文件发添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

2 yml配置

spring:
  mail:
    protocol: smtp
    host: smtp.qq.com
    port: 465
    username: 7******00@qq.com
    password: *******
    properties:
      mail:
        smtp:
          auth: true
          ssl:
            enable: true

3 各种发送邮箱形式

@SpringBootTest
public class SpringEmilTest {
    @Resource
    private JavaMailSender mailSender;
    @Resource
    private MailProperties mailProperties;


    private final static String to = "*********@qq.com";
    private final static String cc = "*********@qq.com";
    //发送简单文本邮箱
    @Test
    public void springJavaSendMail() throws Exception {
        //不是创建消息对象,是从mailSender对象中,获取 消息对象,Spring已经帮助我们创建完了消息对象
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //消息对象的辅助对象
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
        //如果 发送邮件的人,每次都变,
        String from = mailProperties.getUsername();//"xxxxx@163.com";
        String pwd = mailProperties.getPassword();//"xxxxx";
        //谁发的邮件
        helper.setFrom(from);
        //收件人,发送给谁
        helper.addTo(to);
        //抄送
        helper.addCc(cc);
        //设置标题
        helper.setSubject("纯文本邮件,测试");
        //设置邮件内容
        helper.setText("简单的一句话:用 java 发送的邮件");
        //发送按钮
        mailSender.send(mimeMessage);
    }

    //发送html文本,不带图片
    @Test
    public void sendSimpleHtmlEmail() throws Exception {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
        helper.setFrom(mailProperties.getUsername());
        helper.addTo(to);
        helper.addCc(cc);
        //设置标题
        helper.setSubject("带HTML的网页");
        //发送用户列表
        StringBuilder html = new StringBuilder();
        html.append("<h1 style='color:red'>呃呃呃呃呃呃呃呃</h1>");
        html.append("<ul>");
        html.append("<li>学java</li>");
        html.append("<li>学java 发送Email邮件 </li>");
        html.append("<li>学java 学费了</li>");
        html.append("</ul>");
        //设置内容
        helper.setText(html.toString(),true);
        mailSender.send(mimeMessage);
    }


    //发送html文本,带网络图片
    @Test
    public void sendSimpleHtmlEmailAndImg() throws Exception {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
        helper.setFrom(mailProperties.getUsername());
        helper.addTo(to);
        helper.addCc(cc);
        //设置标题
        helper.setSubject("带HTML的网页+网络图片");
        //发送网页内容
        StringBuilder html = new StringBuilder();
        html.append("<ul>");
        html.append("<h1 style='color:red'>发送html文本,带网络图片</h1>");
        html.append("<ul>");
        html.append("<li>学java</li>");
        html.append("<li>学java 发送Email邮件 </li>");
        html.append("<li>学java 学费了</li>");
        html.append("</ul>");
        html.append("<img  src='https://img2.baidu.com/it/u=759913327,516358106&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=625'/>");
        //设置内容
        helper.setText(html.toString(),true);
        mailSender.send(mimeMessage);
    }

    //发送html文本,带本地图片
    @Test
    public void sendSimpleHtmlEmailAndImg2() throws Exception {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //multipart设置为true 表示支持文件上传
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        helper.setFrom(mailProperties.getUsername());
        helper.addTo(to);
        helper.addCc(cc);
        //设置标题
        helper.setSubject("带HTML的网页+本地图片");
        //发送网页内容
        StringBuilder html = new StringBuilder();
        html.append("<ul>");
        html.append("<h1 style='color:red'>发送html文本,带网络图片</h1>");
        html.append("<ul>");
        html.append("<li>学java</li>");
        html.append("<li>学java 发送Email邮件 </li>");
        html.append("<li>学java 学费了</li>");
        html.append("</ul>");
        html.append("<img  src='https://img2.baidu.com/it/u=759913327,516358106&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=625'/>");
        //本地的图片
        helper.setText(html.toString(),true);
        File file = new File("E://桌面//1111111.jpg");
        helper.addInline("ei",file);
        mailSender.send(mimeMessage);
    }


    //发送html文本,带本地图片,带附件
    @Test
    public void sendSimpleHtmlEmailAndImg2AndAttach() throws Exception {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //multipart设置为true 表示支持文件上传
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        helper.setFrom(mailProperties.getUsername());
        helper.addTo(to);
        helper.addCc(cc);
        //设置标题
        helper.setSubject("带HTML的网页+本地图片+附件");
        //设置内容
        String html = "<h1 style='color:red'>测试文字</h1>";
        html+="<img src='cid:ei'>";
        helper.setText(html,true);
        //本地的图片
        File img = new File("E://桌面//1111111.jpg");
        helper.addInline("ei",img);
        //附件
        File fu = new File("E://桌面//1111111.jpg");
        helper.addAttachment("1111111.jpg",fu);
        mailSender.send(mimeMessage);
    }

    // 工具类
    @Resource
    EmailUtil emailUtil;
    @Test
    void utils(){
        String html = "<h1 style='color:red'>测试文字</h1>";
        html+="<img src='cid:ei'>";
        File img = new File("E://桌面//1111111.jpg");
        File fu = new File("E://桌面//1111111.jpg");
        emailUtil.sendEmail(to,"测试工具类",html,img,fu);
    }
}

4 发送邮箱工具类 EmailUtil 

@Component
public class EmailUtil {

    private final static Logger log = LogManager.getLogger(EmailUtil.class);

    @Resource
    private JavaMailSender mailSender;
    @Resource
    private MailProperties mailProperties;

    public void sendEmail(String email, String title, String count) {
        sendEmail(email, title, count, null);
    }

    public void sendEmail(String email, String title, String count, File... files) {
        MimeMessage msg = mailSender.createMimeMessage();
        try {
            MimeMessageHelper h = new MimeMessageHelper(msg,true);
            h.setFrom(mailProperties.getUsername());
            h.addTo(email);
            //h.addCc(mailProperties.getUsername());
            h.setSubject(title);
            h.setText(count,true);
            if (files != null && files.length > 0) {
                for (File f : files) {
                    //如果是图片,单独上传显示
                    if (isImage(f)) {
                        h.addInline("ei",f);
                    }
                    //图片也单独再上传为附件
                    h.addAttachment(f.getName(), f);
                }
            }
            mailSender.send(msg);
        } catch (MessagingException e) {
            log.error(e);
        }
    }

    //判断文件是否是图片类型
    private boolean isImage(File file) {
        try {
            Image image = ImageIO.read(file);
            return image != null;
        } catch (IOException e) {
            return false;
        }
    }
}

5 原生java发送邮件

@SpringBootTest
public class JavasmTest {

    @Autowired
    NewsService newsService;

    @Test
    void f1() throws MessagingException {
        //发邮件
        String account = "*********@163.com";
        String pwd = "*********";
        //设置请求的头信息
        Properties properties = new Properties();
        properties.put("mail.transport.protocol","smtp");//设置 连接的协议
        properties.put("mail.smtp.host","smtp.163.com");//发送邮件的域名
        properties.put("mail.smtp.port",465);//163邮箱的端口号,如果不设置默认是25
        properties.put("mail.smtp.auth","true");//服务器认证
        properties.put("mail.smtp.ssl.enable","true");//开始ssl安全连接
        //控制台显示日志
        properties.put("mail.debug","true");

        //发送给谁
        String to = "*********@126.com";
        //抄送邮箱
        String cc = "*********@163.com";
        //创建会话对象
        Session session = Session.getDefaultInstance(properties);

        //创建Message对象
        MimeMessage mimeMessage = new MimeMessage(session);
        //发送邮箱
        mimeMessage.setFrom(account);
        //发送给谁
        mimeMessage.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
        //抄送给谁
        mimeMessage.addRecipient(Message.RecipientType.CC,new InternetAddress(cc));
        //发送的邮件内容是什么
        mimeMessage.setSubject("我是邮箱的标题,今日新闻");
        //内容
        List<NewsModel> list = newsService.syncNews();
        //可以加html标签
        mimeMessage.setText(list.toString());
        //Transport对象
        Transport transport = session.getTransport();
        //输入用户名密码,连接服务器
        transport.connect(account,pwd);
        //发送的动作
        transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());

    }


}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值