JAVA MAIL发送邮件实例
2015-12-23 16:30
776 查看
MailUtil类
MyAuthenticator类
/** * @author zhaocd */ public class MailUtil { /** * 发件人邮箱服务器 */ private String emailHost = "smtp.163.com"; /** * 发件人邮箱 */ private String emailFrom = "zcd4037@163.com"; /** * 发件人用户名 */ private String emailUserName = "zcd4037@163.com"; /** * 发件人密码 */ private String emailPassword = "你邮箱的密码"; /** * 收件人邮箱,多个邮箱以“;”分隔 */ private String toEmails; /** * 邮件主题 */ private String subject; /** * 邮件内容 */ private String content; /** * 邮件中的图片,为空时无图片。map中的key为图片ID,value为图片地址 */ private Map<String, String> pictures; /** * 邮件中的附件,为空时无附件。map中的key为附件ID,value为附件地址 */ private Map<String, String> attachments; public String getEmailHost() { //emailHost = DataUtil.objToStr(emailHost); return emailHost; } public void setEmailHost(String emailHost) { this.emailHost = emailHost; } public String getEmailFrom() { // emailFrom = DataUtil.objToStr(emailFrom); return emailFrom; } public void setEmailFrom(String emailFrom) { this.emailFrom = emailFrom; } public String getEmailUserName() { return emailUserName; } public void setEmailUserName(String emailUserName) { this.emailUserName = emailUserName; } public String getEmailPassword() { return emailPassword; } public void setEmailPassword(String emailPassword) { this.emailPassword = emailPassword; } public String getToEmails() { return toEmails; } public void setToEmails(String toEmails) { this.toEmails = toEmails; } public String getSubject() { //subject = DataUtil.objToStr(subject); if (subject.equals("")) { subject = "无主题"; } return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Map<String, String> getPictures() { return pictures; } public void setPictures(Map<String, String> pictures) { this.pictures = pictures; } public Map<String, String> getAttachments() { return attachments; } public void setAttachments(Map<String, String> attachments) { this.attachments = attachments; } /** * 发送邮件 */ public void sendEmail() throws Exception { try { if (this.getEmailHost().equals("") || this.getEmailFrom().equals("") || this.getEmailUserName().equals("") || this.getEmailPassword().equals("")) { throw new RuntimeException("发件人信息不完全,请确认发件人信息!"); } JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // 设定mail server senderImpl.setHost(emailHost); // 建立邮件消息 MimeMessage mailMessage = senderImpl.createMimeMessage(); MimeMessageHelper messageHelper = null; messageHelper = new MimeMessageHelper(mailMessage, true, "UTF-8"); // 设置发件人邮箱 messageHelper.setFrom(emailFrom); // 设置收件人邮箱 String[] toEmailArray = toEmails.split(";"); List<String> toEmailList = new ArrayList<String>(); if (null == toEmailArray || toEmailArray.length <= 0) { throw new RuntimeException("收件人邮箱不得为空!"); } else { for (String s : toEmailArray) { //s = DataUtil.objToStr(s); if (!s.equals("")) { toEmailList.add(s); } } if (null == toEmailList || toEmailList.size() <= 0) { throw new RuntimeException("收件人邮箱不得为空!"); } else { toEmailArray = new String[toEmailList.size()]; for (int i = 0; i < toEmailList.size(); i++) { toEmailArray[i] = toEmailList.get(i); } } } messageHelper.setTo(toEmailArray); // 邮件主题 messageHelper.setSubject(subject); // true 表示启动HTML格式的邮件 messageHelper.setText(content, true); // 添加图片 if (null != pictures) { for (Iterator<Map.Entry<String, String>> it = pictures.entrySet() .iterator(); it.hasNext();) { Map.Entry<String, String> entry = it.next(); String cid = entry.getKey(); String filePath = entry.getValue(); if (null == cid || null == filePath) { throw new RuntimeException("请确认每张图片的ID和图片地址是否齐全!"); } File file = new File(filePath); if (!file.exists()) { throw new RuntimeException("图片" + filePath + "不存在!"); } FileSystemResource img = new FileSystemResource(file); messageHelper.addInline(cid, img); } } // 添加附件 if (null != attachments) { for (Iterator<Map.Entry<String, String>> it = attachments .entrySet().iterator(); it.hasNext();) { Map.Entry<String, String> entry = it.next(); String cid = entry.getKey(); String filePath = entry.getValue(); if (null == cid || null == filePath) { throw new RuntimeException("请确认每个附件的ID和地址是否齐全!"); } File file = new File(filePath); if (!file.exists()) { throw new RuntimeException("附件" + filePath + "不存在!"); } FileSystemResource fileResource = new FileSystemResource(file); messageHelper.addAttachment(cid, fileResource); } } Properties prop = new Properties(); prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确 prop.put("mail.smtp.timeout", "25000"); // 添加验证 MyAuthenticator auth = new MyAuthenticator(emailUserName, emailPassword); Session session = Session.getDefaultInstance(prop, auth); senderImpl.setSession(session); // 发送邮件 senderImpl.send(mailMessage); System.out.println("发送成功.........."); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { MailUtil mu = new MailUtil(); try { test1(mu); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void test1(MailUtil mu) throws Exception { String toEmails = "735873267@qq.com"; String subject = "邮件发送测试"; StringBuilder builder = new StringBuilder(); builder.append("asdf富通银行<br />"); builder.append("JavaMail 1.7 jar包下载地址:http://www.oracle.com/technetwork/java/index-138643.html <br />"); String content = builder.toString(); mu.setToEmails(toEmails); mu.setSubject(subject); mu.setContent(content); mu.sendEmail(); System.out.println("ok............"); } }
MyAuthenticator类
public class MyAuthenticator extends Authenticator { String userName = null; String password = null; public MyAuthenticator() { } public MyAuthenticator(String username, String password) { this.userName = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } }
相关文章推荐
- eclipse SVN插件 subclipse 同步出现 E175002 E200007错误解决办法
- eclipse常用快捷键
- JAVA基础正则表达式及日期相关类
- JAVA JDBC连接数据库的步骤
- maven管理的jar包,项目中引用不到,报错java.lang.ClassNotFoundException
- JAVA中获取当前系统时间
- 初识Java_笔记(1)
- Gson把json串转换成java实体对象
- Java -- Class装载机制及ClassLoader
- java heap space解决方法
- java base64图片编码解码
- 从配置文件中初始化spring profile
- 堆排序详解【java版附流程图】
- Spring 一 AOP(概念)
- [流水账] eclipse老是关联包错误的解决办法
- 在Spring下集成ActiveMQ 实现点到点的消息发送
- POI生成excel文件
- [转]Java 如何同步顺序执行多个线程
- java多线程或者定时任务中查询数据库报空指针异常
- Java的indexOf返回的是第一个匹配到的字符的索引位置,substring(a,b)获得字符串的一部分内容