1.新建model

  1. SendMail.java
  1. import java.util.Properties;
  2.  
  3. public class SendMail {
  4. // 发送邮件的服务器的IP和端口
  5. private String mailServerHost;    //服务器名称,类似163的: smtp.163.com
  6. private String mailServerPort = "25";    //服务器端口号
  7. private String fromAddress;    //发送邮件的地址
  8. private String addressName;    //发送邮件的邮箱名称
  9. private String toAddress;    //收件人地址
  10. private String userName;    //和邮箱地址保持一致
  11. private String password;     //邮件安全密码,网易的是客户端授权密码
  12. private boolean validate = false;
  13. private String subject;    //邮件标题
  14. private String content;
  15. private String[] attachFileNames;
  16.  
  17. /**
  18. * 获得邮件会话属性
  19. */
  20. public Properties getProperties() {
  21. Properties p = new Properties();
  22. p.put("mail.smtp.host", this.mailServerHost);
  23. p.put("mail.smtp.port", this.mailServerPort);
  24. p.put("mail.smtp.auth", validate ? "true" : "false");
  25. return p;
  26. }
  27.  
  28. public String getMailServerHost() {
  29. return mailServerHost;
  30. }
  31.  
  32. public void setMailServerHost(String mailServerHost) {
  33. this.mailServerHost = mailServerHost;
  34. }
  35.  
  36. public String getMailServerPort() {
  37. return mailServerPort;
  38. }
  39.  
  40. public void setMailServerPort(String mailServerPort) {
  41. this.mailServerPort = mailServerPort;
  42. }
  43.  
  44. public boolean isValidate() {
  45. return validate;
  46. }
  47.  
  48. public void setValidate(boolean validate) {
  49. this.validate = validate;
  50. }
  51.  
  52. public String[] getAttachFileNames() {
  53. return attachFileNames;
  54. }
  55.  
  56. public void setAttachFileNames(String[] fileNames) {
  57. this.attachFileNames = fileNames;
  58. }
  59.  
  60. public String getFromAddress() {
  61. return fromAddress;
  62. }
  63.  
  64. public void setFromAddress(String fromAddress) {
  65. this.fromAddress = fromAddress;
  66. }
  67.  
  68. public String getPassword() {
  69. return password;
  70. }
  71.  
  72. public void setPassword(String password) {
  73. this.password = password;
  74. }
  75.  
  76. public String getToAddress() {
  77. return toAddress;
  78. }
  79.  
  80. public void setToAddress(String toAddress) {
  81. this.toAddress = toAddress;
  82. }
  83.  
  84. public String getUserName() {
  85. return userName;
  86. }
  87.  
  88. public void setUserName(String userName) {
  89. this.userName = userName;
  90. }
  91.  
  92. public String getSubject() {
  93. return subject;
  94. }
  95.  
  96. public void setSubject(String subject) {
  97. this.subject = subject;
  98. }
  99.  
  100. public String getContent() {
  101. return content;
  102. }
  103.  
  104. public void setContent(String textContent) {
  105. this.content = textContent;
  106. }
  107.  
  108. public String getAddressName() {
  109. return addressName;
  110. }
  111.  
  112. public void setAddressName(String addressName) {
  113. this.addressName = addressName;
  114. }
  115. }

2.发送邮件实现类

  1. MailSender.java
  1. import javax.mail.*;
  2. import javax.mail.internet.InternetAddress;
  3. import javax.mail.internet.MimeBodyPart;
  4. import javax.mail.internet.MimeMessage;
  5. import javax.mail.internet.MimeMultipart;
  6. import java.io.UnsupportedEncodingException;
  7. import java.util.Date;
  8. import java.util.Properties;
  9.  
  10. public class MailSender {
  11.  
  12. /**
  13. * 以文本格式发送邮件
  14. */
  15. public boolean sendTextMail(SendMail mailInfo) {
  16. // 判断是否需要身份认证
  17. Authentication authenticator = null;
  18. Properties pro = mailInfo.getProperties();
  19. if (mailInfo.isValidate()) {
  20. // 如果需要身份认证,则创建一个密码验证器
  21. authenticator = new Authentication(mailInfo.getUserName(),
  22. mailInfo.getPassword());
  23. }
  24. // 根据邮件会话属性和密码验证器构造一个发送邮件的session
  25. Session sendMailSession = Session
  26. .getDefaultInstance(pro, authenticator);
  27. try {
  28. Message mailMessage = new MimeMessage(sendMailSession);
  29. Address from = new InternetAddress(mailInfo.getFromAddress());
  30. mailMessage.setFrom(from);
  31. Address to = new InternetAddress(mailInfo.getToAddress());
  32. mailMessage.setRecipient(Message.RecipientType.TO, to);
  33. mailMessage.setSubject(mailInfo.getSubject());
  34. mailMessage.setSentDate(new Date());
  35. String mailContent = mailInfo.getContent();
  36. mailMessage.setText(mailContent);
  37. Transport.send(mailMessage);
  38. return true;
  39. } catch (MessagingException ex) {
  40. ex.printStackTrace();
  41. }
  42. return false;
  43. }
  44.  
  45. /**
  46. * 以HTML格式发送邮件
  47. */
  48. public boolean sendHtmlMail(SendMail mailInfo) {
  49. // 判断是否需要身份认证
  50. Authentication authenticator = null;
  51. Properties pro = mailInfo.getProperties();
  52. if (mailInfo.isValidate()) {
  53. authenticator = new Authentication(mailInfo.getUserName(),
  54. mailInfo.getPassword());
  55. }
  56. // 根据邮件会话属性和密码验证器构造一个发送邮件的session
  57. Session sendMailSession = Session
  58. .getDefaultInstance(pro, authenticator);
  59. try {
  60. // 根据session创建一个邮件消息
  61. Message mailMessage = new MimeMessage(sendMailSession);
  62.  
  63. mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));
  64. //设置自定义发件人昵称
  65. String nick="";
  66. try {
  67. nick=javax.mail.internet.MimeUtility.encodeText(mailInfo.getAddressName());
  68. } catch (UnsupportedEncodingException e) {
  69. e.printStackTrace();
  70. }
  71. mailMessage.setFrom(new InternetAddress(nick+" <"+mailInfo.getFromAddress()+">"));
  72. // Address from = new InternetAddress(mailInfo.getFromAddress());
  73. // mailMessage.setFrom(from);
  74. Address to = new InternetAddress(mailInfo.getToAddress());
  75. // Message.RecipientType.TO属性表示接收者的类型为TO
  76. mailMessage.setRecipient(Message.RecipientType.TO, to);
  77. mailMessage.setSubject(mailInfo.getSubject());
  78. mailMessage.setSentDate(new Date());
  79. Multipart mainPart = new MimeMultipart();
  80. BodyPart html = new MimeBodyPart();
  81. html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
  82. mainPart.addBodyPart(html);
  83. mailMessage.setContent(mainPart);
  84. Transport.send(mailMessage);
  85. return true;
  86. } catch (MessagingException ex) {
  87. ex.printStackTrace();
  88. }
  89. return false;
  90. }
  91. }

 3.邮件发送工具类

  1. SendMailUtil.java
  1. import java.util.HashMap;
  2. import java.util.Map;
  3.  
  4. public class SendMailUtil {private static SendMail mail() {
  5. SendMail mail = new SendMail();
  6. mail.setMailServerHost("smtp.yeah.net");
  7. mail.setMailServerPort("25");
  8. mail.setValidate(true);
  9. mail.setUserName("发送邮件的邮箱地址");
  10. mail.setPassword("邮件服务器的客户端授权密码");
  11. mail.setFromAddress("发送邮件的邮箱地址");
  12. mail.setAddressName("邮箱名称");
  13. mail.setSubject("标题");
  14. return mail;
  15. }
  16.  
  17. public static boolean checkEmail(String email) {// 验证邮箱的正则表达式
  18. String format = "\\p{Alpha}\\w{2,15}[@][a-z0-9]{3,}[.]\\p{Lower}{2,}";
  19. //p{Alpha}:内容是必选的,和字母字符[\p{Lower}\p{Upper}]等价。如:200896@163.com不是合法的。
  20. //w{2,15}: 2~15个[a-zA-Z_0-9]字符;w{}内容是必选的。 如:dyh@152.com是合法的。
  21. //[a-z0-9]{3,}:至少三个[a-z0-9]字符,[]内的是必选的;如:dyh200896@16.com是不合法的。
  22. //[.]:'.'号时必选的; 如:dyh200896@163com是不合法的。
  23. //p{Lower}{2,}小写字母,两个以上。如:dyh200896@163.c是不合法的。
  24. if (email.matches(format)) {
  25. return true;// 邮箱名合法,返回true
  26. } else {
  27. return false;// 邮箱名不合法,返回false
  28. }
  29. }
  30.  
  31. public static boolean Send(String con,String email,String subject){
  32.  
  33. SendMail mail = mail();
  34.  
  35. mail.setSubject(subject);
  36.  
  37. mail.setContent(con);
  38.  
  39. if (email == null || "".equals(email)) {
  40. return false;
  41. }
  42. mail.setToAddress(email);
  43.  
  44. try {
  45. MailSender sms = new MailSender();
  46. boolean flag = sms.sendHtmlMail(mail);
  47. if (flag == false)
  48. return false;
  49. } catch (Exception e) {
  50. e.printStackTrace();
  51. return false;
  52. }
  53.  
  54. return true;
  55. }
  56.  
  57. }

Java 实现邮件发送功能的更多相关文章

  1. JAVA实现邮件发送功能(账号注册验证码、账号激活等)

    第一步,导入JAR包,JAR包下载地址[http://pan.baidu.com/s/1kVRvGyF] 如果是Maven,请直接在Pom文件中加入 <dependency> <gr ...

  2. Java Mail 邮件发送Demo

    上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...

  3. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  4. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  5. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  6. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  7. redmine邮件发送功能配置详解

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  8. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  9. 用java实现邮件发送验证码

    java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好.所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬 ...

随机推荐

  1. spark streaming updateStateByKey 使用方法

    updateStateByKey 解释: 以DStream中的数据进行按key做reduce操作,然后对各个批次的数据进行累加 在有新的数据信息进入或更新时.能够让用户保持想要的不论什么状.使用这个功 ...

  2. [Android]Fragment源代码分析(三) 事务

    Fragment管理中,不得不谈到的就是它的事务管理,它的事务管理写的很的出彩.我们先引入一个简单经常使用的Fragment事务管理代码片段: FragmentTransaction ft = thi ...

  3. 通过buildpath 导入jar和在lib下导入的jar包区别

    jar包放置在WEB-INF/lib下和通过build path导入的区别是什么? jar包直接拷贝到WEB-INF/lib下和以userLibrary形式引入的区别? jar包放置在WEB-INF/ ...

  4. Test for Job (poj 3249 记忆化搜索)

    Language: Default Test for Job Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9733   A ...

  5. ant+jmeter 报告优化

    环境基础:ant+jmeter+java +jmeter脚本 1.将 JMeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中 2.修改JMete ...

  6. 我的Android进阶之旅------&gt;android中getLocationInWindow 和 getLocationOnScreen的差别

    View.getLocationInWindow(int[] location) 一个控件在其父窗体中的坐标位置 View.getLocationOnScreen(int[] location) 一个 ...

  7. 应用程序 /dev/rtc 编程 获取时间 2011-12-13 01:01:06【转】

    本文转载自:http://blog.chinaunix.net/uid-16785183-id-3040310.html 分类: 原文地址:应用程序 /dev/rtc 编程 获取时间 作者:yuwei ...

  8. Android updater-scripts(Edify Script)各函数详细说明【转】

    本文转载自:http://blog.csdn.net/kwuwei/article/details/40616909 这是Android系统来运行updater-scripts的Edify语言的基本介 ...

  9. (Go)06. Printf格式化输出、Scanf格式化输入详解

    Print.Println .Printf .Sprintf .Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢? Print: 输出到控制台(不接 ...

  10. poj3233Matrix Power Series(矩阵乘法)

    Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 23187   Accepted: ...