iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot实现邮件发送的示例代码
  • 541
分享到

SpringBoot实现邮件发送的示例代码

2024-04-02 19:04:59 541人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

工具类: package com.lhh.utils; import com.lhh.bean.EmailEntity; import javax.mail.*; import

工具类:

package com.lhh.utils;

import com.lhh.bean.EmailEntity;


import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;


public class MailSenderUtil {

    //建立服务器的邮件连接,从而可以进行发送邮件
    public static Session getMailSession(EmailEntity emailEntity){
        //0.1 确定连接位置
        Properties properties = new Properties();
        //获取163邮箱smtp服务器的地址,
        properties.setProperty("mail.host", emailEntity.getHost());
        //是否进行权限验证。
        properties.setProperty("mail.smtp.auth", emailEntity.getAuth());
        //0.2确定权限(账号和密码)
        Authenticator authenticator = new Authenticator() {
            @Override
            public PassWordAuthentication getPasswordAuthentication() {
                //填写自己的163邮箱的登录帐号和授权密码(不是登录密码)。
                return new PasswordAuthentication(emailEntity.getUserName(),emailEntity.getPassword());
            }
        };
        //1 获得连接
        
        Session session = Session.getDefaultInstance(properties, authenticator);
        return session;
    }

    
    public static void sendMailTOSingleUser(EmailEntity emailEntity){
        //获得邮箱服务器的连接
        Session session = getMailSession(emailEntity);
        //2 创建消息
        Message message = new MimeMessage(session);
        // 2.1 发件人 我们自己的邮箱地址,就是名称
        try {
            message.setFrom(new InternetAddress(emailEntity.getUserName()));
            
            message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(emailEntity.getToList().get(0)));
            //设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件
            message.setRecipient(Message.RecipientType.CC, new InternetAddress(emailEntity.getUserName()));
            // 2.3 主题(标题)
            message.setSubject(emailEntity.getSubject());
            //设置编码,防止发送的内容中文乱码。
            message.setContent(emailEntity.getContext(), "text/html;charset=UTF-8");
            //3发送消息
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    
    public static void sendMailToUserArray(EmailEntity emailEntity) {
        String[] toEmailAddressArray = (String[]) emailEntity.getToList().toArray(new String[0]);
        //获得邮箱服务器的连接
        Session session = getMailSession(emailEntity);
        //2 创建消息
        Message message = new MimeMessage(session);
        // 2.1 发件人 我们自己的邮箱地址,就是名称
        try {
            message.setFrom(new InternetAddress(emailEntity.getUserName()));

            if (toEmailAddressArray != null) {
                // 为每个邮件接收者创建一个地址
                Address[] toEmailRecipients = null;
                toEmailRecipients = new InternetAddress[toEmailAddressArray.length];
                for (int i = 0; i < toEmailAddressArray.length; i++) {
                    toEmailRecipients[i] = new InternetAddress(toEmailAddressArray[i]);
                }
                message.setRecipients(MimeMessage.RecipientType.TO, toEmailRecipients);

            }
            //设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件
            message.setRecipient(Message.RecipientType.CC, new InternetAddress(emailEntity.getUserName()));
            // 2.3 主题(标题)
            message.setSubject(emailEntity.getSubject());
            //设置编码,防止发送的内容中文乱码。
            message.setContent(emailEntity.getContext(), "text/html;charset=UTF-8");
            //3发送消息
            Transport.send(message);
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
    }
}

邮件实体类:

package com.lhh.bean;

import java.io.Serializable;
import java.util.ArrayList;

public class EmailEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    //邮箱服务器地址
    private String host;
    //主机端口
    private Integer port;
    //发送者的邮箱账号
    private String userName;
    //发送者的密码
    private String password;
    //发送者的邮箱地址
    private String fromAddress;
    //接收者的邮箱地址
    private ArrayList<String> toList;
    //设置邮件主题
    private String subject;
    //设置邮件内容
    private String context;
    //设置邮件类型
    private String contextType;
    //设置是否需要验证
    private String auth;

    public String getAuth() {
        return auth;
    }

    public void setAuth(String auth) {
        this.auth = auth;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getFromAddress() {
        return fromAddress;
    }

    public void setFromAddress(String fromAddress) {
        this.fromAddress = fromAddress;
    }

    public ArrayList<String> getToList() {
        return toList;
    }

    public void setToList(ArrayList<String> toList) {
        this.toList = toList;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContext() {
        return context;
    }

    public void setContext(String context) {
        this.context = context;
    }

    public String getContextType() {
        return contextType;
    }

    public void setContextType(String contextType) {
        this.contextType = contextType;
    }
}

邮件常量类:

public class MailConst {
    //你的进行发送邮件的邮箱
    public static final String USER_NAME = "xxxx";
    //授权密码
    public static final String  PWD_CODE = "xxxxx";
    public static final String MAIL_HOST = "smtp.163.com";
    public static final String MAIL_SMTP_AUTH = "true";

    //邮件主题
    public static final String NOTIFICATION_MAIL_TITLE = "测试邮件";
    //邮件内容
    public static final String NOTIFICATION_MAIL_CONTENT = "你好,你有一个新的通知,请前往手机端进行查看!";
}

测试邮件:

public class TestMail {

    public static void main(String[] args) {
        EmailEntity emailEntity = new EmailEntity();
        ArrayList<String> emailArray = new ArrayList<>();
        //测试,收取邮件的邮箱,可以填写自己的发送邮件的邮箱
        emailArray.add("xxxx@qq.com");
        emailEntity.setToList(emailArray);
        emailEntity.setSubject(MailConst.NOTIFICATION_MAIL_TITLE);
        emailEntity.setContext(MailConst.NOTIFICATION_MAIL_CONTENT);
        emailEntity.setUserName(MailConst.USER_NAME);
        emailEntity.setAuth(MailConst.MAIL_SMTP_AUTH);
        emailEntity.setPassword(MailConst.PWD_CODE);
        emailEntity.setHost(MailConst.MAIL_HOST);
        MailSenderUtil.sendMailToUserArray(emailEntity);
//        MailSenderUtil.sendMailTOSingleUser(emailEntity);
    }
}

测试发送结果页面:

以上就是SpringBoot实现邮件发送的示例代码的详细内容,更多关于springBoot邮件发送的资料请关注编程网其它相关文章!

--结束END--

本文标题: SpringBoot实现邮件发送的示例代码

本文链接: https://www.lsjlt.com/news/145199.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作