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 实现邮件发送功能的更多相关文章

  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. Sahara中的数据模型

    声明: 本博客欢迎转载.但请保留原作者信息,并请注明出处! 作者:郭德清 团队:华为杭州OpenStack团队 本文主要是介绍下Sahara中一些常见的数据模型. 1.Config 用于描写叙述配置信 ...

  2. android 通用菜单条实现(一)

    一.前言介绍 直奔主题啦,非常多Android app都有菜单条.菜单条除了背景图片.图标的不同外,布局基本一致.大致能够分为三部分:菜单条的左側区域.菜单条中间区域.菜单条右側区域. 为了考虑代码的 ...

  3. Windows移动开发(五)——初始XAML

    关于详细的基本功就先说这么多.后面遇到再补充说明,前面说的都是一些代码和原理方面的东西.接下来说的会有界面和代码结合,会有成就感,由于能真正的做出东西来了. Windows移动开发包含Windows ...

  4. 关注C-RAN 的五大理由

     关注C-RAN的五大理由 Scott Wakelin 近期行业媒体上有大量关于移动网络运营商(如美国的VerizonWireless和AT&T.法国电信以及中国移动等)怎样在着力探索一种 ...

  5. Google Code Jam在线測试题目--Alien Language

    Problem After years of study, scientists at Google Labs have discovered an alien language transmitte ...

  6. Python3.4 远程操控电脑(开关机)

    import poplib import sys import smtplib from email.mime.text import MIMEText import os from email.he ...

  7. Webstorm配置运行React Native

    Webstorm配置运行React Native 1.选择配置 2.选择npm,设置package等参数 3.添加拓展工具 4.配置拓展工具(核心啊) 5.运行测试,ok的.

  8. Codeforces--630J--Divisibility(公倍数)

     J - Divisibility Crawling in process... Crawling failed Time Limit:500MS     Memory Limit:65536KB ...

  9. 【POJ 3764】 The xor-longest path

    [题目链接] http://poj.org/problem?id=3764 [算法] 首先,我们用Si表示从节点i到根的路径边权异或和 那么,根据异或的性质,我们知道节点u和节点v路径上的边权异或和就 ...

  10. STL 集合部分操作

    3.28更新 在EOJ 1641 集合栈计算机中,使用并集和补集时候,第五个参数使用x.begin()会报错:assignment of read-only location,而使用inserter( ...