java实现邮件发送, 抄送及多附件发送
来源:互联网 发布:电脑网络连接在哪里找 编辑:程序博客网 时间:2024/04/25 14:38
所需的jar包
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); }}
1 0
- java实现邮件发送, 抄送及多附件发送
- java实现邮件发送, 抄送及多附件发送
- java实现邮件抄送,密送,多个附件发送
- java实现 邮件抄送,密送,多个附件 发送
- java发送邮件,多人单人发送,抄送,密送,附件
- Linux 发送邮件,抄送+附件,多收件人
- golang发送邮件(抄送,暗送,附件)
- Java实现邮件发送(附件)
- python发送邮件(带附件)、发送给多人、抄送给多人的示例
- java发送邮件(多人发送,附件)
- python发送、抄送邮件
- Javamail实现给多人发送、抄送邮件
- c#发送邮件(带抄送,密送,群发,附件)
- java 发送邮件+附件
- Java 发送邮件【附件】
- java实现发送邮件与添加附件
- java实现邮件发送(带附件)
- Java实现邮件发送【带附件】
- Less变量详解
- web app遇到的一些坑及小技能(持续更新...) 遇到的一些坑
- 从开发者的角度剖析微信小程序
- python数据类型与c++,java数据类型区别
- 数据结构与算法排序算法
- java实现邮件发送, 抄送及多附件发送
- ETCD Cluster 安装
- 利用OATS技术来设计Test Case
- Android中的SystemClock类
- JAVA 堆和栈
- Struts2-字段优先校验
- mysql插入中文乱码,我犯了一个很弱智的错误
- does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare
- 文件管理问题记录点