话很少说,上代码--第一种,本身实现的,参考资料html
javaMail 的邮件发送包括了抄送(CC),密送(BCC)采用springBootjava
经常使用的邮件服务器名称、地址及SSL/非SSL协议端口号web
Java Mail发送邮件(带多个附件)spring
引入的依赖为apache
<!-- email --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.4</version> </dependency>
@Test public void testEmail() throws Exception { /** 本身实现的 */ MailUtil mailUtil = new MailUtil(); List<File> attaches = new ArrayList<File>(); 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"),"测试", "<h1>邮件来自Hutool测试</h1>",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<String> 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<String> listEmails, List<String> cc, String title, String content ,List<String> bcc,List<File> 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<listEmails.size();k++){ String emailAddress = listEmails.get(k); new InternetAddress(emailAddress); toAddress[k]=new InternetAddress(emailAddress); } log.debug("当前须要发送邮件的地址信息============>{}"+Arrays.deepToString(toAddress)); msg.addRecipients(Message.RecipientType.TO, toAddress); //增长CC功能 if(cc != null) { InternetAddress[] ccAddress = new InternetAddress[cc.size()]; for(int k = 0;k<cc.size();k++){ String emailAddress = cc.get(k); new InternetAddress(emailAddress); ccAddress[k]=new InternetAddress(emailAddress); } msg.addRecipients(Message.RecipientType.CC, ccAddress); } //增长BCC功能 if(bcc != null) { InternetAddress[] bccAddress = new InternetAddress[bcc.size()]; for(int k = 0;k<bcc.size();k++){ String emailAddress = bcc.get(k); new InternetAddress(emailAddress); bccAddress[k]=new InternetAddress(emailAddress); } msg.addRecipients(Message.RecipientType.BCC, bccAddress); } //设置邮件主题 msg.setSubject(MimeUtility.encodeText(title,MimeUtility.mimeCharset("UTF-8"), null)); // 设置邮件格式 msg.setContent(content, "text/html;charset=UTF-8"); // 设置邮件发送日期 msg.setSentDate(new Date()); if (!CollectionUtils.isEmpty(attachments)) { msg = this.listFile(content, attachments, msg); } transport.sendMessage(msg, msg.getAllRecipients()); log.info("邮件已发送"); return true; } public MimeMessage listFile(String content, List<File> 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
参数识别:参考---参考资料session
cn.hutool.extra.mail.MailUtil.send(CollUtil.newArrayList("13740519@qq.com"), CollUtil.newArrayList("8040824@qq.com"), CollUtil.newArrayList("timagi@163.com"), "测试主题", "<h1>邮件来自Hutool测试</h1>", true);
# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀> host = smtp.qiye.163.com # 邮件服务器的SMTP端口,可选,默认25 port = 25 # 发件人(必须正确,不然发送失败) from = Tihui@pa.com # 用户名,默认为发件人邮箱前缀 user = Tihui@pa.com # 密码(注意,某些邮箱须要为SMTP服务单独设置密码,详情查看相关帮助) pass = Lo1313
引入的依赖为 ide
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>