javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)

Wesley13
• 阅读 728
  1. private Session session;

  2.    private Transport transport;

  3.    private String mailHost = "";

  4.    private String sender_username = "";

  5.    private String sender_password = "";

  6.    private String contentPart_Type = "";

  7.    private Properties properties = new Properties();

  8.    /*

  9. * 初始化方法

  10. */

  11.    public JavaMailWithAttachment() {

  12.        try {

  13.         FileInputStream is=new FileInputStream("E:/workspace1.6/ICRM-H5/src/mailServer.properties");

  14.            properties.load(is);  

  15.            this.mailHost = properties.getProperty("mail.smtp.host");

  16.            this.sender_username = properties.getProperty("mail.sender.username");

  17.            this.sender_password = properties.getProperty("mail.sender.password");

  18.            this.contentPart_Type = properties.getProperty("mail.contentPart.type");

  19.        } catch (IOException e) {

  20.            e.printStackTrace();  

  21.        }  

  22.        session = Session.getInstance(properties);  

  23.        session.setDebug(true); //开启后有调试信息,发布时关闭

  24.        message = new MimeMessage(session);

  25.    }  

  26.    /**

  27. * 发送邮件

  28. * @param subject

  29. *               邮件主题

  30. * @param sendHtml

  31. *               邮件内容

  32. * @param toUser

  33. *               收件人  多个时参数形式  :  "xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"

  34. * @param ccUser

  35. *               抄送人   同上

  36. * @param bccUser

  37. *               密送人   同上

  38. * @param attachment

  39. *               附件

  40. */

  41. public void doSendHtmlEmail(String subject, String sendHtml,

  42.         String  toUser, String ccUser, String bccUser, File [] attachment){  

  43.     try {

  44.         // 发件人

  45.            InternetAddress from = new InternetAddress(sender_username);

  46.            message.setFrom(from);  

  47.            // 设置多个收件人地址

  48.            if(null != toUser && !toUser.isEmpty()){

  49.             @SuppressWarnings("static-access")

  50.             InternetAddress[] internetAddressTo = new InternetAddress().parse(toUser);

  51.             message.setRecipients(Message.RecipientType.TO, internetAddressTo);  

  52.            }  

  53.            // 设置多个抄送地址

  54.            if(null != ccUser && !ccUser.isEmpty()){

  55.             @SuppressWarnings("static-access")

  56.             InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);

  57.             message.setRecipients(Message.RecipientType.CC, internetAddressCC);  

  58.            }  

  59.            // 设置多个密送地址

  60.            if(null != bccUser && !bccUser.isEmpty()){

  61.             @SuppressWarnings("static-access")

  62.             InternetAddress[] internetAddressBCC = new InternetAddress().parse(bccUser);

  63.             message.setRecipients(Message.RecipientType.BCC, internetAddressBCC);  

  64.            }  

  65.            // 发送日期

  66.            message.setSentDate(new Date());

  67.            // 邮件主题

  68.            message.setSubject(subject);  

  69.            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

  70.            Multipart multipart = new MimeMultipart();

  71.            // 添加邮件正文

  72.            BodyPart contentPart = new MimeBodyPart();

  73.            contentPart.setContent(sendHtml, contentPart_Type);  

  74.            multipart.addBodyPart(contentPart);  

  75.            BodyPart attachmentBodyPart = null;

  76.            // 添加附件的内容

  77.            if (null != attachment && attachment.length != 0) {

  78.             for (File file : attachment) {

  79.                 attachmentBodyPart = new MimeBodyPart();

  80.                 DataSource source = new FileDataSource(file);

  81.                 attachmentBodyPart.setDataHandler(new DataHandler(source));

  82.                 //MimeUtility.encodeWord可以避免文件名乱码

  83.                    attachmentBodyPart.setFileName(MimeUtility.encodeWord(file.getName()));  

  84.                    multipart.addBodyPart(attachmentBodyPart);  

  85.             }  

  86.            }  

  87.            // 将multipart对象放到message中

  88.            message.setContent(multipart);  

  89.            // 保存邮件

  90.            message.saveChanges();  

  91.            // smtp验证

  92.            transport = session.getTransport("smtp");

  93.            transport.connect(mailHost, sender_username, sender_password);  

  94.            // 发送

  95.            transport.sendMessage(message, message.getAllRecipients());  

  96.            System.out.println("发送成功!");

  97.     } catch (Exception e) {

  98.         e.printStackTrace();  

  99.     } finally {

  100.         if (transport != null) {

  101.                try {

  102.                    transport.close();  

  103.                } catch (MessagingException e) {

  104.                    e.printStackTrace();  

  105.                }  

  106.            }  

  107.     }  

  108.    }

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这