博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用过的发送邮件的方法。
阅读量:7225 次
发布时间:2019-06-29

本文共 8975 字,大约阅读时间需要 29 分钟。

hot3.png

package cn.primeledger.bank.service.core.mc.service;import cn.primeledger.bank.service.core.mc.exception.MailException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.List;import java.util.Properties;/** * 邮件发送接口(使用前必须调用init函数) */@Servicepublic class MailSenderService {    private Logger LOGGER = LoggerFactory.getLogger(MailSenderService.class);    //邮件服务器地址    @Value("${mail.smtp.username}")    private String username;    //邮件服务器地址    @Value("${mail.smtp.password}")    private String password;    //邮件服务器地址    @Value("${mail.smtp.host}")    private String host;    //发送邮件端口    @Value("${mail.smtp.port}")    private String port;    //邮箱Session    private Session session;    /**     * 初始化邮箱发送器     */    private void init() {        Properties props = new Properties();        //初始化props        props.put("mail.smtp.auth", "true");        props.put("mail.smtp.host", host);        props.put("mail.smtp.port", port);        props.put("mail.transport.protocol", "smtp");        props.put("mail.smtp.starttls.enable", "true");        //创建session,想当于邮箱登录        session = Session.getDefaultInstance(props, new Authenticator() {            protected PasswordAuthentication getPasswordAuthentication() {                return new PasswordAuthentication(username, password);            }        });    }    /**     * 发送邮件     *     * @param accept  收信人邮箱地址     * @param subject 邮件标题     * @param content 邮件内容     * @throws MessagingException     */    public void send(String accept, String subject, String content) {        LOGGER.info("start into mail send. accept=[{}]", accept);        //初始化邮件服务器        this.init();        //创建mime类型邮件        final MimeMessage msg = new MimeMessage(session);        try {            //设置发信人            msg.setFrom(new InternetAddress(username));            //设置收信人            msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(accept));            //设置邮件标题            msg.setSubject(subject, "utf-8");            //设置邮件内容,并设置UTF-8编码            msg.setContent(content, "text/html;charset=utf-8");            //发送邮件            Transport.send(msg);        } catch (MessagingException e) {            throw new MailException("发送邮件,消息传递异常", e);        } finally {            LOGGER.info("end mail send. accept=[{}]", accept);        }    }    /**     * 群发邮件     *     * @param accepts 收信人们的邮箱地址     * @param subject 邮件标题     * @param content 邮件内容     * @throws MessagingException     */    public void send(List
accepts, String subject, String content) { LOGGER.info("start into mails send. accept=[{}]", accepts); //初始化邮件服务器 this.init(); //创建mime类型邮件 final MimeMessage msg = new MimeMessage(session); try { //设置发信人 msg.setFrom(new InternetAddress(username)); //设置收信人们 int num = accepts.size(); InternetAddress[] addresses = new InternetAddress[num]; for (int i = 0; i < num; i++) { addresses[i] = new InternetAddress(accepts.get(i)); } msg.setRecipients(MimeMessage.RecipientType.TO, addresses); //设置邮件标题 msg.setSubject(subject, "text/html;charset=utf-8"); //设置邮件内容 msg.setContent(content, "text/html;charset=utf-8"); Transport.send(msg); } catch (MessagingException e) { throw new MailException("群发邮件,消息传递异常", e); } finally { LOGGER.info("end mails send. accept=[{}]", accepts); } }}

 

 

@Servicepublic class MailSenderService {    private Logger LOGGER = LoggerFactory.getLogger(MailSenderService.class);    //邮件服务器账号    private static String USERNAME;    //邮件服务器密码    private static String PASSWORD;    //邮件服务器URL    private static String HOST;    //发送邮件端口    private static String PORT;    //spring boot 不能注入静态属性,可以所以这么做到    @Value("${mail.smtp.username}")    public void setUsername(String username) {        USERNAME = username;    }    @Value("${mail.smtp.password}")    public void setPassword(String password) {        PASSWORD = password;    }    @Value("${mail.smtp.host}")    public void setHost(String host) {        HOST = host;    }    @Value("${mail.smtp.port}")    public void setPort(String port) {        PORT = port;    }    //邮件发件人    @Value("${mail.smtp.from}")    private String from;    //邮件发件人名称    @Value("${mail.smtp.fromname}")    private String fromname;    //邮箱Session    private static Session session;    /**     * 初始化邮箱发送器     */    private static void init() {        // 配置javamail        Properties props = System.getProperties();        props.setProperty("mail.transport.protocol", "smtp");        props.setProperty("mail.smtp.host", HOST);        props.setProperty("mail.smtp.port", PORT);        props.setProperty("mail.smtp.auth", "true");        props.setProperty("mail.smtp.connectiontimeout", "180");        props.setProperty("mail.smtp.timeout", "600");        props.setProperty("mail.mime.encodefilename", "true");        session = Session.getInstance(props, new Authenticator() {            protected PasswordAuthentication getPasswordAuthentication() {                return new PasswordAuthentication(USERNAME, PASSWORD);            }        });    }    /**     * 设置邮件     *     * @param message     * @param subject     * @param content     * @throws UnsupportedEncodingException     * @throws MessagingException     */    private void setMessage(MimeMessage message, String subject, String content) throws UnsupportedEncodingException, MessagingException {        // 发信人        message.setFrom(new InternetAddress(from, fromname, "UTF-8"));        // 邮件主题        message.setSubject(subject, "UTF-8");        // 邮件类型:纯文本与超文本共存。        Multipart multipart = new MimeMultipart("alternative");        // 添加html形式的邮件正文        String html = "" + content + " ";        BodyPart contentPart = new MimeBodyPart();        contentPart.setHeader("Content-Type", "text/html;charset=UTF-8");        contentPart.setHeader("Content-Transfer-Encoding", "base64");        contentPart.setContent(html, "text/html;charset=UTF-8");        multipart.addBodyPart(contentPart);        message.setContent(multipart);    }    /**     * 发送邮件     *     * @param accept  收信人邮箱地址     * @param subject 邮件标题     * @param content 邮件内容     * @throws MessagingException     */    public void send(String accept, String subject, String content) {        LOGGER.info("start into mail send. accept=[{}]", accept);        //初始化邮件服务器        this.init();        try {            //创建mime类型邮件            MimeMessage message = new MimeMessage(session);            //设置邮件            setMessage(message, subject, content);            // 收件人地址            message.addRecipient(Message.RecipientType.TO, new InternetAddress(accept));            // 连接sendcloud服务器,发送邮件            SMTPTransport transport = (SMTPTransport) session.getTransport("smtp");            transport.connect();            transport.sendMessage(message, message.getRecipients(MimeMessage.RecipientType.TO));            transport.close();        } catch (Exception e) {            LOGGER.error("sender mail fail", e);            MonitorLogUtils.logMonitorInfo(MonitorTarget.MAIL_SENDER_ERROR, TargetInfoType.INT, 1);            throw new MailException("sender mail fail",e);        }    }    /**     * 群发邮件     *     * @param accepts 收信人们的邮箱地址     * @param subject 邮件标题     * @param content 邮件内容     * @throws MessagingException     */    public void send(List
accepts, String subject, String content) { LOGGER.info("start into mails send. accept=[{}]", accepts); //初始化邮件服务器 this.init(); //创建mime类型邮件 final MimeMessage message = new MimeMessage(session); try { //设置邮件 setMessage(message, subject, content); //设置收信人们 int num = accepts.size(); InternetAddress[] addresses = new InternetAddress[num]; for (int i = 0; i < num; i++) { addresses[i] = new InternetAddress(accepts.get(i)); } message.setRecipients(MimeMessage.RecipientType.TO, addresses); // 连接sendcloud服务器,发送邮件 SMTPTransport transport = (SMTPTransport) session.getTransport("smtp"); transport.connect(); transport.sendMessage(message, message.getRecipients(MimeMessage.RecipientType.TO)); transport.close(); } catch (Exception e) { LOGGER.error("sender mails fail", e); MonitorLogUtils.logMonitorInfo(MonitorTarget.MAIL_SENDER_ERROR, TargetInfoType.INT, 1); throw new MailException("sender mails fail", e); } finally { LOGGER.info("end mails send. accept=[{}]", accepts); } }}

转载于:https://my.oschina.net/u/3142419/blog/1574749

你可能感兴趣的文章
Myth源码解析系列之一-项目简介
查看>>
JS易混淆的方法整理
查看>>
iOS下JS与OC互相调用(八)--Cordova详解+实战
查看>>
七牛实时音视频云视频连线demo(web部分)
查看>>
Netty源码分析(六):SelectedSelectionKeySetSelector
查看>>
forEach,for...of,map与asycn/await
查看>>
springboot 2 Hikari 多数据源配置问题(dataSourceClassName or jdbcUrl is required)
查看>>
Golang数据库编程之GORM模型定义与数据库迁移
查看>>
Oracle redo解析之-4、rowid的计算
查看>>
Easy Scheduler 1.0.3 发布,分布式工作流任务调度系统
查看>>
java 颠倒整数
查看>>
Python入门教程100天:Day05-练习总结
查看>>
环境搭建,8种基本类型,Static,package和import,log4j
查看>>
即将到来的 Debian 10 Buster 发布版的新特点
查看>>
iOS 头部视图下拉变大
查看>>
Disruptor并发框架
查看>>
react-hooks 实现简单的评论list
查看>>
【多图警告】学会JavaScript测试你就是同行中最亮的仔(妹)
查看>>
19-04-25
查看>>
一个JAVA程序员成长之路分享
查看>>