java实现邮件发送, 抄送及多附件发送

所需的jar包 
  1. mailapi.jar和smtp.jar 
    或 
    javax-mail-xxx.jar(如javax.mail-1.5.6.jar) 
    http://www.oracle.com/technetwork/java/index-138643.html

  2. 代码

import java.io.UnsupportedEncodingException;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;/*** 邮件管理器* java 实现邮件的发送, 抄送及多附件* @author zhuxiongxian* @version 1.0* @created at 2016年10月8日 下午3:52:11*/
public class EmailManager {public static String username = "service@zhuxiongxian.cc"; // 服务邮箱(from邮箱)public static String password = "yourpassword"; // 邮箱密码public static String senderNick = "XX科技";   // 发件人昵称private Properties props; // 系统属性 private Session session; // 邮件会话对象 private MimeMessage mimeMsg; // MIME邮件对象 private Multipart mp;   // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 private static EmailManager instance = null; public EmailManager() {props = System.getProperties();props.put("mail.smtp.auth", "true");props.put("mail.transport.protocol", "smtp");props.put("mail.smtp.host", "smtp.exmail.qq.com");props.put("mail.smtp.port", "25");props.put("username", username);props.put("password", password);// 建立会话session = Session.getDefaultInstance(props);session.setDebug(false);}public static EmailManager getInstance() {if (instance == null) {instance = new EmailManager();}return instance; }/*** 发送邮件* @param from 发件人* @param to 收件人* @param copyto 抄送* @param subject 主题* @param content 内容* @param fileList 附件列表* @return*/public boolean sendMail(String from, String[] to, String[] copyto, String subject, String content, String[] fileList) {boolean success = true;try {mimeMsg = new MimeMessage(session);mp = new MimeMultipart(); // 自定义发件人昵称String nick = "";try {nick = javax.mail.internet.MimeUtility.encodeText(senderNick);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 设置发件人
//          mimeMsg.setFrom(new InternetAddress(from));mimeMsg.setFrom(new InternetAddress(from, nick));// 设置收件人if (to != null && to.length > 0) {String toListStr = getMailList(to);mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr));}// 设置抄送人if (copyto != null && copyto.length > 0) {String ccListStr = getMailList(copyto);mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccListStr)); }// 设置主题mimeMsg.setSubject(subject);// 设置正文BodyPart bp = new MimeBodyPart(); bp.setContent(content, "text/html;charset=utf-8");mp.addBodyPart(bp);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {bp = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]); bp.setDataHandler(new DataHandler(fds)); bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));mp.addBodyPart(bp); }}mimeMsg.setContent(mp); mimeMsg.saveChanges(); // 发送邮件if (props.get("mail.smtp.auth").equals("true")) {Transport transport = session.getTransport("smtp"); transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password"));
//              transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
//              transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());transport.close(); } else {Transport.send(mimeMsg);}System.out.println("邮件发送成功");} catch (MessagingException e) {e.printStackTrace();success = false;} catch (UnsupportedEncodingException e) {e.printStackTrace();success = false;}return success;}/*** 发送邮件* @param from 发件人* @param to 收件人, 多个Email以英文逗号分隔* @param cc 抄送, 多个Email以英文逗号分隔* @param subject 主题* @param content 内容* @param fileList 附件列表* @return*/public boolean sendMail(String from, String to, String cc, String subject, String content, String[] fileList) {boolean success = true;try {mimeMsg = new MimeMessage(session);mp = new MimeMultipart(); // 自定义发件人昵称String nick = "";try {nick = javax.mail.internet.MimeUtility.encodeText(senderNick);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 设置发件人
//          mimeMsg.setFrom(new InternetAddress(from));mimeMsg.setFrom(new InternetAddress(from, nick));// 设置收件人if (to != null && to.length() > 0) {mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));}// 设置抄送人if (cc != null && cc.length() > 0) {mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); }// 设置主题mimeMsg.setSubject(subject);// 设置正文BodyPart bp = new MimeBodyPart(); bp.setContent(content, "text/html;charset=utf-8");mp.addBodyPart(bp);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {bp = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]); bp.setDataHandler(new DataHandler(fds)); bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));mp.addBodyPart(bp); }}mimeMsg.setContent(mp); mimeMsg.saveChanges(); // 发送邮件if (props.get("mail.smtp.auth").equals("true")) {Transport transport = session.getTransport("smtp"); transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password")); transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());transport.close(); } else {Transport.send(mimeMsg);}System.out.println("邮件发送成功");} catch (MessagingException e) {e.printStackTrace();success = false;} catch (UnsupportedEncodingException e) {e.printStackTrace();success = false;}return success;}public String getMailList(String[] mailArray) {StringBuffer toList = new StringBuffer();int length = mailArray.length;if (mailArray != null && length < 2) {toList.append(mailArray[0]);} else {for (int i = 0; i < length; i++) {toList.append(mailArray[i]);if (i != (length - 1)) {toList.append(",");}}}return toList.toString();}public static void main(String[] args) {String from = username;String[] to = {"10086@qq.com", "xx@zhuxiongxian.cc"};String[] copyto = {"123456@163.com"};String subject = "测试一下";String content = "这是邮件内容,仅仅是测试,不需要回复.";String[] fileList = new String[3];fileList[0] = "d:/zxing.png";fileList[1] = "d:/urls.txt";fileList[2] = "d:/surname.txt";EmailManager.getInstance().sendMail(from, to, copyto, subject, content, fileList);}
}

java实现邮件发送, 抄送及多附件发送相关推荐

  1. Java Mail多人群发与多附件发送

    最近公司的项目用到了Java Mail来发送注册邮件,不过,开发的时候都是使用封装好的JAR,以前也不是很了解Java Mail的使用原理.网上很多代码都是只有一部分,看一看也跑不起来,今天正好有时间 ...

  2. 邮件发送程序(添加附件发送)

    目标:实现一个基于Web的可以发送附件的邮件程序.(涉及的知识点:文件上传+邮件发送) 知识点引入: 文件上传:开发的Web应用是基于HTTP协议的,工作在Request/Response模式下.在这 ...

  3. java 实现邮件的发送, 抄送及多附件

    import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; im ...

  4. springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】

    0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...

  5. java定时任务:oracle导出excel后,发送excel作为附件的邮件

    定时任务类: package com.cairenhui.sec.task;import java.io.File; import java.io.FileOutputStream; import j ...

  6. 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】

    一.邮件发送 1.邮件发送使用SMTP协议或者IMAP协议,这里使用SMTP协议演示. SMTP协议使用的端口号:25 rfc821详细记载了该协议的相关信息 (1)使用telnet发送邮件(使用12 ...

  7. java收到邮件后短信提醒_java邮件发送和短信发送(一)

    最近刚完成一个任务-付款提醒邮件的发送,对于java邮件的发送有了更深刻的认识,的确java提供的邮件发送机制的确让邮件发送这个问题变得灵活而又简单.并且由于项目组其他人负责了短信的发送,巧的是这个邮 ...

  8. ManagementDay06(javamail 发送html内容和附件 实现用户注册时发个邮件通知)

    如果不需要做判断 可以不用手动拼接json串 可以用ctrl+shift+t 可以搜寻类名 就能找到具体的类名 回顾 1.用户--角色Span标签的样式:display:inline-block;wi ...

  9. java 发邮件 简化JavaMail Commons-Email 抄送

    一:Quick Start 通过SimpleEmail发送邮件 1 java.lang.Object 2   org.apache.commons.mail.Email 3       org.apa ...

最新文章

  1. php7 实战 新闻类,楼+之PHP7实战第1期
  2. 蓝桥杯国赛-数正方形-java
  3. 详细的多维度测评,看看哪个 Python 版本速度最快!
  4. 【开发工具】SCALA
  5. 阿拉伯数字转化为中文汉字(大、小写) - PHP
  6. 支付宝包下了9家报纸的头版,竟然是为了……
  7. WIBU-KEY加密狗驱动软件使用说明
  8. SAP 各模块常用T-Code
  9. uni-app 开发微信小程序定位
  10. 非因解读 | 单细胞空间蛋白质组学分析揭示临床显著性前列腺癌多参数相关MRI检查的异质性
  11. Ansible playbook
  12. 用pygame为大家燃放新年烟花
  13. 使用tesseract训练自己的字库提高识别率
  14. Python实现BBS自动登录并发帖
  15. 2017网易有道校招前端面试
  16. [Swift]国际化
  17. c语言手机整人源码,c语言整人代码-20210411015719.docx-原创力文档
  18. 英特尔微型计算机第一启动项,英特尔九代酷睿:强悍的笔记本电脑平台
  19. DNS解析过程及欺骗原理
  20. 解决insmod igb_uio.ko报错问题

热门文章

  1. 初接触设计模式--简单工厂(二)
  2. Python关于File学习过程
  3. 极品五笔管理员能用,普通用户无法使用
  4. VDI ROI不包括硬成本节约
  5. 移动端自适应缩放代码
  6. 《计算机科学导论》 数据库基础知识
  7. Yii 关于AR分表
  8. .NET 设计规范--.NET约定、惯用法与模式--附录:C#编程风格约定
  9. 学校网络安全事故救助机制初探
  10. 微软4月补丁星期二修复119个漏洞,含2个0day