java实现邮件发送, 抄送及多附件发送
java实现邮件发送, 抄送及多附件发送
mailapi.jar和smtp.jar
或
javax-mail-xxx.jar(如javax.mail-1.5.6.jar)
http://www.oracle.com/technetwork/java/index-138643.html代码
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实现邮件发送, 抄送及多附件发送相关推荐
- Java Mail多人群发与多附件发送
最近公司的项目用到了Java Mail来发送注册邮件,不过,开发的时候都是使用封装好的JAR,以前也不是很了解Java Mail的使用原理.网上很多代码都是只有一部分,看一看也跑不起来,今天正好有时间 ...
- 邮件发送程序(添加附件发送)
目标:实现一个基于Web的可以发送附件的邮件程序.(涉及的知识点:文件上传+邮件发送) 知识点引入: 文件上传:开发的Web应用是基于HTTP协议的,工作在Request/Response模式下.在这 ...
- java 实现邮件的发送, 抄送及多附件
import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; im ...
- springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】
0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...
- java定时任务:oracle导出excel后,发送excel作为附件的邮件
定时任务类: package com.cairenhui.sec.task;import java.io.File; import java.io.FileOutputStream; import j ...
- 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】
一.邮件发送 1.邮件发送使用SMTP协议或者IMAP协议,这里使用SMTP协议演示. SMTP协议使用的端口号:25 rfc821详细记载了该协议的相关信息 (1)使用telnet发送邮件(使用12 ...
- java收到邮件后短信提醒_java邮件发送和短信发送(一)
最近刚完成一个任务-付款提醒邮件的发送,对于java邮件的发送有了更深刻的认识,的确java提供的邮件发送机制的确让邮件发送这个问题变得灵活而又简单.并且由于项目组其他人负责了短信的发送,巧的是这个邮 ...
- ManagementDay06(javamail 发送html内容和附件 实现用户注册时发个邮件通知)
如果不需要做判断 可以不用手动拼接json串 可以用ctrl+shift+t 可以搜寻类名 就能找到具体的类名 回顾 1.用户--角色Span标签的样式:display:inline-block;wi ...
- java 发邮件 简化JavaMail Commons-Email 抄送
一:Quick Start 通过SimpleEmail发送邮件 1 java.lang.Object 2 org.apache.commons.mail.Email 3 org.apa ...
最新文章
- php7 实战 新闻类,楼+之PHP7实战第1期
- 蓝桥杯国赛-数正方形-java
- 详细的多维度测评,看看哪个 Python 版本速度最快!
- 【开发工具】SCALA
- 阿拉伯数字转化为中文汉字(大、小写) - PHP
- 支付宝包下了9家报纸的头版,竟然是为了……
- WIBU-KEY加密狗驱动软件使用说明
- SAP 各模块常用T-Code
- uni-app 开发微信小程序定位
- 非因解读 | 单细胞空间蛋白质组学分析揭示临床显著性前列腺癌多参数相关MRI检查的异质性
- Ansible playbook
- 用pygame为大家燃放新年烟花
- 使用tesseract训练自己的字库提高识别率
- Python实现BBS自动登录并发帖
- 2017网易有道校招前端面试
- [Swift]国际化
- c语言手机整人源码,c语言整人代码-20210411015719.docx-原创力文档
- 英特尔微型计算机第一启动项,英特尔九代酷睿:强悍的笔记本电脑平台
- DNS解析过程及欺骗原理
- 解决insmod igb_uio.ko报错问题