前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >带附件/密送/抄送的 javaMail 邮件发送 -- java_demo(两种实现方式)

带附件/密送/抄送的 javaMail 邮件发送 -- java_demo(两种实现方式)

作者头像
allsmallpig
发布2021-02-25 15:15:14
发布2021-02-25 15:15:14
1.6K00
代码可运行
举报
文章被收录于专栏:allsmallpi博客allsmallpi博客
运行总次数:0
代码可运行

话不多说,上代码--第一种,自己实现的,参考资料

javaMail 的邮件发送包括了抄送(CC),密送(BCC)采用springBoot

常用的邮件服务器名称、地址及SSL/非SSL协议端口号

Java Mail发送邮件(带多个附件)

引入的依赖为

代码语言:javascript
代码运行次数:0
运行
复制
			com.sun.mail
			javax.mail
			1.5.4
代码语言:javascript
代码运行次数:0
运行
复制
 @Test
    public void testEmail() throws Exception {

        /** 自己实现的 */
        MailUtil mailUtil = new MailUtil();

        List attaches = new ArrayList();
        File attach1 = new File("C:\\Users\\LYIHENG\\Desktop\\工作资料\\邮箱签名.docx");
        File attach2 = new File("C:\\Users\\LYIHENG\\Desktop\\工作资料\\演示文稿1.pptx");
        attaches.add(attach1);
        attaches.add(attach2);
        mailUtil.sendSSLEmailWithCC(CollUtil.newArrayList("13740548@qq.com"),CollUtil.newArrayList("8040824@qq.com"),"测试",
                "邮件来自Hutool测试",CollUtil.newArrayList("timae@163.com"),attaches);

    }
代码语言:javascript
代码运行次数:0
运行
复制
package com.fh.hr.web.provider.util;


import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.io.IOException;
import java.util.*;

@Slf4j
@Data
@Component
//@ConfigurationProperties(prefix="mail.smtp")
//@PropertySource(value = "classpath:**/mail.properties", ignoreResourceNotFound = true)
public class MailUtil {
//    @Value("${mail.smtp.host}")
    private String host ="smtp.qiye.163.com";
//    @Value("${mail.smtp.port}")
    private String port="25";
//    @Value("${mail.smtp.SSLport}")
    private String SSLport="25";
//    @Value("${mail.smtp.starttlsEnable}")
    private String starttlsEnable="true";
//    @Value("${mail.smtp.auth}")
    private String auth="true";
//    @Value("${mail.smtp.connectiontimeout}")
    private String connectiontimeout="50000";
//    @Value("${mail.smtp.account}")
    /**本处的邮箱账号和下面的 nickname 是同一个 */
    private String account="XXXXXXXX@XXXX.com";
//    @Value("${mail.smtp.password}")
 /**上一行邮箱的密码 */
    private String password="XXXXXXXX";
//    @Value("${mail.smtp.timeout}")
    private String timeout="5000000";

    private  Vector file; // 多个附件
  private String filename; // 附件的文件名

    private String nickname ="XXXXXXXX@XXXX.com";//发送者,显示的发件人名字
    protected static Log LOGGER = LogFactory.getLog(MailUtil.class);


    /**
     *  带cc/bcc(抄送/密送)的邮件发送
     * @param listEmails 邮箱地址
     * @param cc 抄送
     * @param title 主题
     * @param content 正文
     * @param bcc 密送
     * @return
     * @throws Exception
     */
    public boolean sendSSLEmailWithCC(List listEmails, List cc, String title, String content ,List bcc,List attachments) throws Exception {
        LOGGER.info("开始发送邮件,email==>"+listEmails+",title==>"+title);
        Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        // 指定协议
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.port", SSLport);
        props.put("mail.smtp.starttls.enable", starttlsEnable);

        props.put("mail.smtp.auth", auth);
        props.put("mail.smtp.connectiontimeout", connectiontimeout);
        props.put("mail.smtp.timeout", timeout);
        props.put("mail.smtp.debug", true);
        Transport transport = null;
        Session session = Session.getDefaultInstance(props, null);
        transport = session.getTransport("smtp");
        transport.connect(host, account, password);
        MimeMessage msg = new MimeMessage(session);
        msg.setSentDate(new Date());


        InternetAddress fromAddress = new InternetAddress(account,nickname);
        msg.setFrom(fromAddress);
        InternetAddress[] toAddress = new InternetAddress[listEmails.size()];
        for(int k = 0;k{}"+Arrays.deepToString(toAddress));
        msg.addRecipients(Message.RecipientType.TO, toAddress);

        //增加CC功能
        if(cc != null) {
            InternetAddress[] ccAddress = new InternetAddress[cc.size()];
            for(int k = 0;k attachments, MimeMessage message) throws MessagingException, IOException {

        Multipart multipart = new MimeMultipart();
        //邮件正文
        BodyPart contentPart = new MimeBodyPart();
        contentPart.setContent(content, "text/html;charset=utf-8");
        multipart.addBodyPart(contentPart);
        //邮件附件
        if (attachments != null) {
            for (File attachment : attachments) {
                BodyPart attachmentPart = new MimeBodyPart();
                DataSource source = new FileDataSource(attachment);
                attachmentPart.setDataHandler(new DataHandler(source));
                //避免中文乱码的处理
                attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
                multipart.addBodyPart(attachmentPart);
            }
        }
        message.setContent(multipart);
        //保存邮件
        message.saveChanges();
        return message;
//        Transport.send(message);
    }

    public String toChinese(String text) {
        try {
            text = MimeUtility.encodeText(new String(text.getBytes(), "GB2312"), "GB2312", "B");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return text;
    }

}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

好了,一下是另外一种的实现方式,首先要创建一个 mail.setting 的文件,在classpath(在标准Maven项目中为src/main/resources)的config目录下新建mail.setting文件,最小配置内容如下,在此配置下,smtp服务器和用户名都将通过from参数识别:参考---参考资料

代码语言:javascript
代码运行次数:0
运行
复制
     cn.hutool.extra.mail.MailUtil.send(CollUtil.newArrayList("13740519@qq.com"),
                CollUtil.newArrayList("8040824@qq.com"),
                CollUtil.newArrayList("timagi@163.com"),
                "测试主题",
                "邮件来自Hutool测试",
                true);
代码语言:javascript
代码运行次数:0
运行
复制
# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.qiye.163.com
# 邮件服务器的SMTP端口,可选,默认25
port = 25
# 发件人(必须正确,否则发送失败)
from = Tihui@pa.com
# 用户名,默认为发件人邮箱前缀
user = Tihui@pa.com
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = Lo1313

引入的依赖为 

代码语言:javascript
代码运行次数:0
运行
复制
    javax.mail
    mail
    1.4.7
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档