黑豹程序员-java发邮件,发送内容支持html,带多附件的案例

介绍

发邮件mail是常见的软件功能,下面利于spring和java的mail库实现发送内容支持html,带多附件的案例

开启SMTP邮件发送协议

谁提供的SMTP邮件服务,就找谁开启。QQ邮箱类似。

依赖

bash 复制代码
        <!--Java MAil 发送邮件API-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.6.2</version>
        </dependency>

代码

bash 复制代码
package com.mail;

import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;

/**
 * @version v1.0 创建时间:2023/11/20 15:59
 * @author: 作者:陈子枢
 * @web CSDN:https://blog.csdn.net/nutony
 * @description 描述:读取属性配置文件,发送邮件
 */

@Slf4j
@PropertySource("classpath:mail.properties")
public class MailClient {

    @Value("${host}")
    private String minioUrl;
    @Value("${port}")
    private int port;

    public static void sender(String form, String cc, String subject, String html, List<String> attachments) throws javax.mail.MessagingException {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost("smtp.163.com");
        sender.setPort(25);

        sender.setUsername(form);
        sender.setPassword("配置的授权码");
        sender.setDefaultEncoding("UTF-8");

        // 简化对mimeMessage的封装
        MimeMessage message = sender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(sender.createMimeMessage(), true, "UTF-8");

        helper.setFrom(sender.getUsername());  //邮件发送人
        helper.setCc(cc);                  //抄送
        helper.setSubject(subject);            //标题
        helper.setText(html,true);       //正文

        //邮件附件
        for(String attachment: attachments) {
            File file = new File(attachment);
            helper.addAttachment(file.getName(), file);
        }
        sender.send(helper.getMimeMessage());
    }

    public static void main(String[] args) throws MessagingException, javax.mail.MessagingException {
        List<String> attachments = new ArrayList<>();
        attachments.add("d:\\1.png");
        attachments.add("d:\\2.png");

        MailClient.sender("13261758319@163.com", "52399178@qq.com", "HTML邮件", "<h1 style='color:red'>hello,world!</h1>",attachments);


        log.info("邮件发送成功!");

    }

}
相关推荐
rannn_1112 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
leisoo80972 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
不会代码的小猴3 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
IKUN家族3 小时前
Spring IoC&DI
java·spring·rpc
一只旭宝4 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
山荷枝5 小时前
03-框架--Spring
java·后端·spring
ChaHae-In5 小时前
SpringBoot统一功能处理
java·spring boot·后端
coder!mq6 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding6 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
Lhan.zzZ6 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio