600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 带附件/密送/抄送的 javaMail 邮件发送 -- java_demo(两种实现方式)

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

时间:2019-11-25 22:37:04

相关推荐

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

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

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

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

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

引入的依赖为

<!-- email --><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.5.4</version></dependency>

@Testpublic 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@"),CollUtil.newArrayList("8040824@"),"测试","<h1>邮件来自Hutool测试</h1>",CollUtil.newArrayList("timae@"),attaches);}

package com.fh.hr.web.provider.util;import lombok.Data;import lombok.extern.slf4j.Slf4j;import mons.logging.Log;import mons.logging.LogFactory;import org.ponent;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.";// @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@";// @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@";//发送者,显示的发件人名字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(, 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参数识别:参考---参考资料

cn.hutool.extra.mail.MailUtil.send(CollUtil.newArrayList("13740519@"),CollUtil.newArrayList("8040824@"),CollUtil.newArrayList("timagi@"),"测试主题","<h1>邮件来自Hutool测试</h1>",true);

# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>host = smtp.# 邮件服务器的SMTP端口,可选,默认25port = 25# 发件人(必须正确,否则发送失败)from = Tihui@# 用户名,默认为发件人邮箱前缀user = Tihui@# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)pass = Lo1313

引入的依赖为

<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。