话不多说,上代码--第一种,自己实现的,参考资料
javaMail 的邮件发送包括了抄送(CC),密送(BCC)采用springBoot
常用的邮件服务器名称、地址及SSL/非SSL协议端口号
Java Mail发送邮件(带多个附件)
引入的依赖为
com.sun.mail
javax.mail
1.5.4
@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);
}
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
参数识别:参考---参考资料
cn.hutool.extra.mail.MailUtil.send(CollUtil.newArrayList("13740519@qq.com"),
CollUtil.newArrayList("8040824@qq.com"),
CollUtil.newArrayList("timagi@163.com"),
"测试主题",
"邮件来自Hutool测试",
true);
# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.qiye.163.com
# 邮件服务器的SMTP端口,可选,默认25
port = 25
# 发件人(必须正确,否则发送失败)
from = Tihui@pa.com
# 用户名,默认为发件人邮箱前缀
user = Tihui@pa.com
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = Lo1313
引入的依赖为
javax.mail
mail
1.4.7