javamail 发送邮件
2015-09-16 15:24
597 查看
1. 所需jar包
mail.jar2. 邮件支持
支持普通文本、
html文本、
抄送多人、
密送多人、
发送多个附件
3. javamail实体封装
package com.roach.mail; import java.io.Serializable; public class JavaMail implements Serializable{ private static final long serialVersionUID = 5753846197635578474L; /** 邮件用户, 即发件人的邮箱 */ private String username; /** 发件人邮箱密码 */ private String password; /** 所使用的邮箱服务 */ private String host; /** 邮件接收用户 */ private String toMail; /** 抄送邮箱用户 (carbon copy) */ private String[] ccMails; /** 密送邮箱用户 blind carbon copy) */ private String[] bccMails; /** 邮件主题 */ private String subject; /** 邮件内容 */ private String content; /** 附件地址 */ private String[] attachments; public JavaMail() { this.username = "123456@qq.com"; this.password = "123456"; this.host = "smtp.qq.com"; } public JavaMail(String username, String password, String host){ this.username = username; this.password = password; this.host = host; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getToMail() { return toMail; } public void setToMail(String toMail) { this.toMail = toMail; } public String[] getCcMails() { return ccMails; } public void setCcMails(String[] ccMails) { this.ccMails = ccMails; } public String[] getBccMails() { return bccMails; } public void setBccMails(String[] bccMails) { this.bccMails = bccMails; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String[] getAttachments() { return attachments; } public void setAttachments(String[] attachments) { this.attachments = attachments; } }
4. JavaMailUtils工具类
package com.roach.mail; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; 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; public class JavaMailUtils { /** * 发送文本邮件 * @param javaMail * @return */ public static boolean sendTextMail(JavaMail javaMail){ return sendMail(javaMail, false); } /** * 发送HTML邮件 * @param javaMail * @return */ public static boolean sendHtmlMail(JavaMail javaMail){ return sendMail(javaMail, true); } private static boolean sendMail(final JavaMail javaMail, boolean isHtml){ boolean flag = true; Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", javaMail.getHost()); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(javaMail.getUsername(), javaMail.getPassword()); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(javaMail.getUsername())); // 接收邮件邮箱: 只可发送单个用户 message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(javaMail.getToMail())); // 抄送邮箱: 可抄送多个用户 if (javaMail.getCcMails() != null && javaMail.getCcMails().length > 0) { StringBuffer cc = new StringBuffer(javaMail.getCcMails()[0]); for (int i = 1; i < javaMail.getCcMails().length; i++) { cc.append(",").append(javaMail.getCcMails()[i]); } message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc.toString())); } // 密送邮箱:可密送多个用户 if (javaMail.getBccMails() != null && javaMail.getBccMails().length > 0) { StringBuffer bcc = new StringBuffer(javaMail.getBccMails()[0]); for (int i = 1; i < javaMail.getBccMails().length; i++) { bcc.append(",").append(javaMail.getBccMails()[i]); } message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcc.toString())); } // 设置邮箱主题 message.setSubject(javaMail.getSubject()); Multipart multipart = new MimeMultipart(); /* 第一部分: 设置邮件body正文 */ BodyPart bodyPart = new MimeBodyPart(); if(isHtml){ bodyPart.setContent(javaMail.getContent(), "text/html;charset=UTF-8"); }else{ bodyPart.setText(javaMail.getContent());; } multipart.addBodyPart(bodyPart); /* 第二部分: 设置邮件附件 */ if(javaMail.getAttachments() != null && javaMail.getAttachments().length > 0){ for (int i = 0; i < javaMail.getAttachments().length; i++) { bodyPart = new MimeBodyPart(); String filename = javaMail.getAttachments()[i]; DataSource source = new FileDataSource(filename); bodyPart.setDataHandler(new DataHandler(source)); bodyPart.setFileName(source.getName()); multipart.addBodyPart(bodyPart); } } message.setContent(multipart); Transport.send(message); } catch (MessagingException e) { flag = false; e.printStackTrace(); } return flag; } private static String html(){ return "<!DOCTYPE html>" + "<html lang='en'>" + "<head>" + "<meta charset='UTF-8'>" + "<title>test</title>" + "</head>" + "<body>" + "<div style='color: red; text-align: center'>" + "<h1>Hello World</h1>" + "</div>" + "</body>" + "</html>"; } public static void main(String[] args) { JavaMail javamail = new JavaMail(); javamail.setSubject("test"); javamail.setContent(html()); javamail.setToMail("456789@qq.com"); javamail.setAttachments(new String[]{"D:\\123.docx","D:\\BugReport.txt"}); System.out.println(sendMail(javamail, true)); } }
相关文章推荐
- hp实训之Java(第四周)
- JavaWeb中的九大内置对象总结
- Java中POI操作Excel常用方法
- java中重载与重写的区别
- 如何自定义实现数值的四舍五入?
- 使用CXF框架学习搭建WebService(二)
- MyEclipse 10, 2013, 2014 破解、注册码
- 判断两棵二叉树是否相等
- Java集合的用法和比较
- java、java -version能正常运行、但javac不是内部或外部命令,有可能是变量位置问题!
- JAVA中科学计数法转换普通计数法
- java实现Telnet连接
- Java编写简单三角形与菱形
- 抽象模式
- Java 类加载与初始化
- 闲谈编程之 Java内部类
- 关于java和.net中string string[] arraylist的相互转化
- 如何阅读Java源码
- java 内部类
- HDU 1850 Being a Good Boy in Spring Festival(博弈)