Java 实现邮件发送功能
1.新建model
- SendMail.java
- import java.util.Properties;
- public class SendMail {
- // 发送邮件的服务器的IP和端口
- private String mailServerHost; //服务器名称,类似163的: smtp.163.com
- private String mailServerPort = "25"; //服务器端口号
- private String fromAddress; //发送邮件的地址
- private String addressName; //发送邮件的邮箱名称
- private String toAddress; //收件人地址
- private String userName; //和邮箱地址保持一致
- private String password; //邮件安全密码,网易的是客户端授权密码
- private boolean validate = false;
- private String subject; //邮件标题
- private String content;
- private String[] attachFileNames;
- /**
- * 获得邮件会话属性
- */
- public Properties getProperties() {
- Properties p = new Properties();
- p.put("mail.smtp.host", this.mailServerHost);
- p.put("mail.smtp.port", this.mailServerPort);
- p.put("mail.smtp.auth", validate ? "true" : "false");
- return p;
- }
- public String getMailServerHost() {
- return mailServerHost;
- }
- public void setMailServerHost(String mailServerHost) {
- this.mailServerHost = mailServerHost;
- }
- public String getMailServerPort() {
- return mailServerPort;
- }
- public void setMailServerPort(String mailServerPort) {
- this.mailServerPort = mailServerPort;
- }
- public boolean isValidate() {
- return validate;
- }
- public void setValidate(boolean validate) {
- this.validate = validate;
- }
- public String[] getAttachFileNames() {
- return attachFileNames;
- }
- public void setAttachFileNames(String[] fileNames) {
- this.attachFileNames = fileNames;
- }
- public String getFromAddress() {
- return fromAddress;
- }
- public void setFromAddress(String fromAddress) {
- this.fromAddress = fromAddress;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getToAddress() {
- return toAddress;
- }
- public void setToAddress(String toAddress) {
- this.toAddress = toAddress;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getSubject() {
- return subject;
- }
- public void setSubject(String subject) {
- this.subject = subject;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String textContent) {
- this.content = textContent;
- }
- public String getAddressName() {
- return addressName;
- }
- public void setAddressName(String addressName) {
- this.addressName = addressName;
- }
- }
2.发送邮件实现类
- MailSender.java
- import javax.mail.*;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- import java.io.UnsupportedEncodingException;
- import java.util.Date;
- import java.util.Properties;
- public class MailSender {
- /**
- * 以文本格式发送邮件
- */
- public boolean sendTextMail(SendMail mailInfo) {
- // 判断是否需要身份认证
- Authentication authenticator = null;
- Properties pro = mailInfo.getProperties();
- if (mailInfo.isValidate()) {
- // 如果需要身份认证,则创建一个密码验证器
- authenticator = new Authentication(mailInfo.getUserName(),
- mailInfo.getPassword());
- }
- // 根据邮件会话属性和密码验证器构造一个发送邮件的session
- Session sendMailSession = Session
- .getDefaultInstance(pro, authenticator);
- try {
- Message mailMessage = new MimeMessage(sendMailSession);
- Address from = new InternetAddress(mailInfo.getFromAddress());
- mailMessage.setFrom(from);
- Address to = new InternetAddress(mailInfo.getToAddress());
- mailMessage.setRecipient(Message.RecipientType.TO, to);
- mailMessage.setSubject(mailInfo.getSubject());
- mailMessage.setSentDate(new Date());
- String mailContent = mailInfo.getContent();
- mailMessage.setText(mailContent);
- Transport.send(mailMessage);
- return true;
- } catch (MessagingException ex) {
- ex.printStackTrace();
- }
- return false;
- }
- /**
- * 以HTML格式发送邮件
- */
- public boolean sendHtmlMail(SendMail mailInfo) {
- // 判断是否需要身份认证
- Authentication authenticator = null;
- Properties pro = mailInfo.getProperties();
- if (mailInfo.isValidate()) {
- authenticator = new Authentication(mailInfo.getUserName(),
- mailInfo.getPassword());
- }
- // 根据邮件会话属性和密码验证器构造一个发送邮件的session
- Session sendMailSession = Session
- .getDefaultInstance(pro, authenticator);
- try {
- // 根据session创建一个邮件消息
- Message mailMessage = new MimeMessage(sendMailSession);
- mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));
- //设置自定义发件人昵称
- String nick="";
- try {
- nick=javax.mail.internet.MimeUtility.encodeText(mailInfo.getAddressName());
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- mailMessage.setFrom(new InternetAddress(nick+" <"+mailInfo.getFromAddress()+">"));
- // Address from = new InternetAddress(mailInfo.getFromAddress());
- // mailMessage.setFrom(from);
- Address to = new InternetAddress(mailInfo.getToAddress());
- // Message.RecipientType.TO属性表示接收者的类型为TO
- mailMessage.setRecipient(Message.RecipientType.TO, to);
- mailMessage.setSubject(mailInfo.getSubject());
- mailMessage.setSentDate(new Date());
- Multipart mainPart = new MimeMultipart();
- BodyPart html = new MimeBodyPart();
- html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
- mainPart.addBodyPart(html);
- mailMessage.setContent(mainPart);
- Transport.send(mailMessage);
- return true;
- } catch (MessagingException ex) {
- ex.printStackTrace();
- }
- return false;
- }
- }
3.邮件发送工具类
- SendMailUtil.java
- import java.util.HashMap;
- import java.util.Map;
- public class SendMailUtil {private static SendMail mail() {
- SendMail mail = new SendMail();
- mail.setMailServerHost("smtp.yeah.net");
- mail.setMailServerPort("25");
- mail.setValidate(true);
- mail.setUserName("发送邮件的邮箱地址");
- mail.setPassword("邮件服务器的客户端授权密码");
- mail.setFromAddress("发送邮件的邮箱地址");
- mail.setAddressName("邮箱名称");
- mail.setSubject("标题");
- return mail;
- }
- public static boolean checkEmail(String email) {// 验证邮箱的正则表达式
- String format = "\\p{Alpha}\\w{2,15}[@][a-z0-9]{3,}[.]\\p{Lower}{2,}";
- //p{Alpha}:内容是必选的,和字母字符[\p{Lower}\p{Upper}]等价。如:200896@163.com不是合法的。
- //w{2,15}: 2~15个[a-zA-Z_0-9]字符;w{}内容是必选的。 如:dyh@152.com是合法的。
- //[a-z0-9]{3,}:至少三个[a-z0-9]字符,[]内的是必选的;如:dyh200896@16.com是不合法的。
- //[.]:'.'号时必选的; 如:dyh200896@163com是不合法的。
- //p{Lower}{2,}小写字母,两个以上。如:dyh200896@163.c是不合法的。
- if (email.matches(format)) {
- return true;// 邮箱名合法,返回true
- } else {
- return false;// 邮箱名不合法,返回false
- }
- }
- public static boolean Send(String con,String email,String subject){
- SendMail mail = mail();
- mail.setSubject(subject);
- mail.setContent(con);
- if (email == null || "".equals(email)) {
- return false;
- }
- mail.setToAddress(email);
- try {
- MailSender sms = new MailSender();
- boolean flag = sms.sendHtmlMail(mail);
- if (flag == false)
- return false;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
- }
Java 实现邮件发送功能的更多相关文章
- JAVA实现邮件发送功能(账号注册验证码、账号激活等)
第一步,导入JAR包,JAR包下载地址[http://pan.baidu.com/s/1kVRvGyF] 如果是Maven,请直接在Pom文件中加入 <dependency> <gr ...
- Java Mail 邮件发送Demo
上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...
- SpringBoot 2.X从0到1实现邮件发送功能
Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...
- spring-boot-route(二十二)实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇
在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...
- redmine邮件发送功能配置详解
redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...
- .NET开发邮件发送功能
.NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知 ...
- 用java实现邮件发送验证码
java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好.所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬 ...
随机推荐
- spark streaming updateStateByKey 使用方法
updateStateByKey 解释: 以DStream中的数据进行按key做reduce操作,然后对各个批次的数据进行累加 在有新的数据信息进入或更新时.能够让用户保持想要的不论什么状.使用这个功 ...
- [Android]Fragment源代码分析(三) 事务
Fragment管理中,不得不谈到的就是它的事务管理,它的事务管理写的很的出彩.我们先引入一个简单经常使用的Fragment事务管理代码片段: FragmentTransaction ft = thi ...
- 通过buildpath 导入jar和在lib下导入的jar包区别
jar包放置在WEB-INF/lib下和通过build path导入的区别是什么? jar包直接拷贝到WEB-INF/lib下和以userLibrary形式引入的区别? jar包放置在WEB-INF/ ...
- Test for Job (poj 3249 记忆化搜索)
Language: Default Test for Job Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9733 A ...
- ant+jmeter 报告优化
环境基础:ant+jmeter+java +jmeter脚本 1.将 JMeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中 2.修改JMete ...
- 我的Android进阶之旅------>android中getLocationInWindow 和 getLocationOnScreen的差别
View.getLocationInWindow(int[] location) 一个控件在其父窗体中的坐标位置 View.getLocationOnScreen(int[] location) 一个 ...
- 应用程序 /dev/rtc 编程 获取时间 2011-12-13 01:01:06【转】
本文转载自:http://blog.chinaunix.net/uid-16785183-id-3040310.html 分类: 原文地址:应用程序 /dev/rtc 编程 获取时间 作者:yuwei ...
- Android updater-scripts(Edify Script)各函数详细说明【转】
本文转载自:http://blog.csdn.net/kwuwei/article/details/40616909 这是Android系统来运行updater-scripts的Edify语言的基本介 ...
- (Go)06. Printf格式化输出、Scanf格式化输入详解
Print.Println .Printf .Sprintf .Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢? Print: 输出到控制台(不接 ...
- poj3233Matrix Power Series(矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 23187 Accepted: ...