java实现发邮件的代码
来源:互联网 发布:fanuc数控系统pmc编程 编辑:程序博客网 时间:2024/05/03 00:11
所需要的jar可以到我的资源下载里面例子,以下只是自己的总结备份
MailSenderInfo.java
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.oct.util;
import java.util.Properties;
public class MailSenderInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
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;
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MD5Util.java
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.oct.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
/**
* 将源字符串使用MD5加密为字节数组
* @param source
* @return
*/
public static byte[] encode2bytes(String source) {
byte[] result = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(source.getBytes("UTF-8"));
result = md.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
/**
* 将源字符串使用MD5加密为32位16进制数
* @param source
* @return
*/
public static String encode2hex(String source) {
byte[] data = encode2bytes(source);
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < data.length; i++) {
String hex = Integer.toHexString(0xff & data[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
/**
* 验证字符串是否匹配
* @param unknown 待验证的字符串
* @param okHex使用MD5加密过的16进制字符串
* @return 匹配返回true,不匹配返回false
*/
public static boolean validate(String unknown , String okHex) {
return okHex.equals(encode2hex(unknown));
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MyAuthenticator.java
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.oct.util;
import javax.mail.*;
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);
}
public static void main(String[] args){
//这个类主要是设置邮件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.qq.com");//目前仅限于QQ邮箱发送邮件
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("88888888@qq.com");//你邮箱账号
mailInfo.setPassword("8888888");//你的邮箱密码
mailInfo.setFromAddress("88888888@qq.com");//你的邮箱地址
mailInfo.setToAddress("999999999@qq.com");//对方邮箱地址
mailInfo.setSubject("我很希望你能收到");//邮件标题
mailInfo.setContent("恭喜你,你的账号获得我公司抽取的二等奖.三星笔记本电脑一台.加9999元现金!等我回来了去银行领取!");//邮件类容
// 发送邮件
StringBuffer sb = new StringBuffer(
"点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
sb.append(
"<a href=\"url?email.email=")//此处需要改
.append(1)
.append("&email.validateCode=")
.append(1)
.append("\">url?email.email=")//此处需要改
.append(1).append("&email.validateCode=")
.append(1).append("</a>");
mailInfo.setContent(sb.toString());
//这个类主要来发送邮件
SimpleMailSender sms = new SimpleMailSender();
//sms.sendTextMail(mailInfo);//发送文体格式
sms.sendHtmlMail(mailInfo);//发送html格式
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SendUtil.java
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.oct.util;
import javax.mail.Authenticator;
public class SendUtil extends Authenticator{
public static MailSenderInfo sendInfo(String email,String validateCode){
//这个类主要是设置邮件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.qq.com");//目前仅限于QQ邮箱发送邮件
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("888888@qq.com");//你邮箱账号
mailInfo.setPassword("123");//你的邮箱密码
mailInfo.setFromAddress("88888@qq.com");//你的邮箱地址
mailInfo.setToAddress(email);//对方邮箱地址
mailInfo.setSubject("智慧景区注册邮箱验证");
StringBuffer sb = new StringBuffer(
"点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
sb.append(
"<a href=\"url?email.email=")
.append(email)
.append("&email.validateCode=")
.append(validateCode)
.append("\">url?email.email=")
.append(email).append("&email.validateCode=")
.append(validateCode).append("</a>");
mailInfo.setContent(sb.toString());
SimpleMailSender sms = new SimpleMailSender();
sms.sendHtmlMail(mailInfo);//发送html格式
return mailInfo;
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SimpleMailSender.java
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package com.oct.util;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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;
/** *//**
* 简单邮件(不带附件的邮件)发送器
http://www.bt285.cn BT下载
*/
public class SimpleMailSender {
/** *//**
* 以文本格式发送邮件
* @param mailInfo 待发送的邮件的信息
*/
public boolean sendTextMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
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格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
public static boolean sendHtmlMail(MailSenderInfo mailInfo){
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
//如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
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());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(mainPart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Action调用
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/**
* 注册
*
* @return
* @throws DaoException
* @throws ServiceException
*/
public String register() throws DaoException, ServiceException {
System.out.println("ddd");
iEmaiService.processRegister(email.getEmail());
return null;
}
public String activate()throws DaoException, ServiceException {
try {
iEmaiService.processActivate(email.getEmail(), email.getValidateCode());
System.out.println("验证成功");
} catch (Exception e) {
System.out.println("验证失败");
}
return null;
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EmailServiceImpl.java
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@Override
public void processRegister(String email) throws DaoException {
Email em = new Email();
em.setEmail(email);
em.setRegisterTime(new Date());
em.setStatus(0);
em.setValidateCode(MD5Util.encode2hex(email));
saveEmail(em);
//发送邮件
SendUtil.sendInfo(email, em.getValidateCode());
}
/**
* 处理激活
*
* @param email
* 邮箱地址
* @param validateCode
* 验证码
* @throws ServiceException
*/
public void processActivate(String email, String validateCode)
throws DaoException {
List<Email> em = iEmailDao.findByEmmail(email);
//验证用户是否存在
if(em != null) {
//验证用户状态
if(em.get(0).getStatus() == 0) {
Date currentTime = new Date();
//验证链接是否过期
if(currentTime.before(em.get(0).getLastActivateTime())) {
//验证激活码是否正确
if(validateCode.equals(em.get(0).getValidateCode())) {
em.get(0).setStatus(1);
//激活成功,
iEmailDao.update(em.get(0));
} else {
System.out.println("激活码不正确");
}
} else {
System.out.println("激活码已过期!");
}
} else {
System.out.println("邮箱已激活,请登录!");
}
} else {
System.out.println("该邮箱未注册(邮箱地址不存在)!");
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- java实现发邮件的代码
- java发邮件的代码
- java发邮件的实现
- Java发邮件 实现步骤+代码
- java 发邮件 代码
- java实现发邮件
- Java 实现发邮件
- java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码
- java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码
- 发邮件的实现
- java发邮件代码示例
- Email 发邮件完整代码(Java实现)
- Java发邮件功能实现
- java实现发邮件功能
- Java实现发邮件功能
- Java发邮件简单实现
- Java实现发邮件功能
- jmail发邮件的代码
- ubuntu 文件操作命令
- JSP_EL的回顾
- 我的2013,我的CSDN
- TogetherJS:Mozilla推出的实时协作工具
- 下拉列表<s:select>的用法
- java实现发邮件的代码
- RepositoriesCollection方法
- ZOJ-3487
- Delphi中如何释放内存(转)
- 在magento的xml文件中加入图片images,或者一些其他的html代码
- 经典的机器学习方面源代码库(非常全,数据挖掘,计算机视觉,模式识别,信息检索相关领域都适用的了)
- Lisp中的Loop宏
- java 操作JavaBean
- linux消息队列