目前很多大型的网站忘记登录密码常见的一种形式是使用邮箱找回密码  最近做项目也有这个需求  现在总结一下  以便以后查看

使用到的包有 mailapi.jar smtp.jar  

封装发送邮件的实体

package com.tes;

import java.util.Date;
import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility; /**
* @author Javen
* @Email zyw205@gmail.com
*/
public class Mail {
String to = ""; // 收件人
String from = ""; // 发件人
String host = ""; // smtp主机
String username = ""; // 用户名
String password = ""; // 密码
String subject = ""; // 邮件主题
String content = ""; // 邮件正文 public Mail() {
} public Mail(String to, String from, String host, String username,
String password, String subject, String content) {
this.to = to;
this.from = from;
this.host = host;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
} /**
* 把主题转换为中文
*
* @param strText
* @return
*/
public String transferChinese(String strText) { try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),
"GB2312"), "GB2312", "B");
} catch (Exception e) {
e.printStackTrace();
} return strText;
} /**
* 发送邮件
*
* @return 成功返回true,失败返回false
*/
public boolean sendMail() {
// 构造mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// 构造MimeMessage并设定基本的值,创建消息对象
MimeMessage msg = new MimeMessage(session);
// 设置消息内容
msg.setFrom(new InternetAddress(from));
System.out.println(from);
// 把邮件地址映射到Internet地址上
InternetAddress[] address = { new InternetAddress(to) };
/**
* setRecipient(Message.RecipientType type, Address
* address),用于设置邮件的接收者。<br>
* 有两个参数,第一个参数是接收者的类型,第二个参数是接收者。<br>
* 接收者类型可以是Message.RecipientType .TO,Message
* .RecipientType.CC和Message.RecipientType.BCC,TO表示主要接收人,CC表示抄送人
* ,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。
*/
msg.setRecipients(Message.RecipientType.TO, address);
// 设置邮件的标题
subject = transferChinese(subject);
msg.setSubject(subject);
// 构造Multipart
Multipart mp = new MimeMultipart(); // 向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
// 设置邮件内容(纯文本格式)
// mbpContent.setText(content);
// 设置邮件内容(HTML格式)
mbpContent.setContent(content, "text/html;charset=utf-8");
// 向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
// 向Multipart添加MimeMessage
msg.setContent(mp);
// 设置邮件发送的时间。
msg.setSentDate(new Date());
// 发送邮件
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
} public String getTo() {
return to;
} public void setTo(String to) {
this.to = to;
} public String getFrom() {
return from;
} public void setFrom(String from) {
this.from = from;
} public String getHost() {
return host;
} public void setHost(String host) {
this.host = host;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getSubject() {
return subject;
} public void setSubject(String subject) {
this.subject = subject;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
}
}

    测试向自己的邮箱发一封邮件

package com.tes;

/**
* @author Javen
* @Email zyw205@gmail.com
*
*/
public class Test {
public static void main(String[] args) { Mail mail = new Mail();
mail.setTo("572839485@qq.com");
mail.setFrom("zhxhjyw@163.com");// 你的邮箱
mail.setHost("smtp.163.com"); //smtp.qq.com
mail.setUsername("xxx");// 用户
mail.setPassword("xxxx");// 密码
mail.setSubject("[测试]找回您的账户密码");
mail.setContent("测试发邮件");
if (mail.sendMail()) {
System.out.println(" 发送成功");
} }
}

使用Java程序发送Email的更多相关文章

  1. Java后端发送email实现

    依赖的jar包 <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail& ...

  2. 第一次发博,发个简单的Java程序发送手机短信验证

    最近在准备一个项目,想的登录时候用手机验证,就通过上网查阅了一下手机验证的实现方法,原来超级简单,下面将一步一步介绍. 1.去中国网建注册一个账号密码,首次注册送五条免费短信和3条免费彩信.具体的网址 ...

  3. VC++ 利用MAPI实现在程序中调用默认的电子邮件程序发送EMAIL(可以添加附件)。

    1.利用ShellExecute 可以条用默认邮件客户端,但不能发送带附件的邮件 mailto:用户账号@邮件服务器地址?subject=邮件主题&body=邮件正文   如:ShellExe ...

  4. java发送email

    package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; imp ...

  5. 使用java程序模拟页面发送http的post请求

    在web应用程序中,一般都是通过页面发送http的post请求,但也可以使用java程序来模拟页面发送请求,代码如下: import java.io.BufferedReader; import ja ...

  6. 基于JavaMail的Java邮件发送:简单邮件发送

    使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) . 您可以从 Java 网 ...

  7. 通过Fiddler监控Java应用发送请求及相应数据

    Fiddler可以很好的监控浏览器发送的各种请求及响应数据,对于JAVA程序默认情况下是无法监控的,但实际需求中需要监控JAVA程序发送HTTP请求及返回数据是否正确. Fiddler默认配置的监听端 ...

  8. java mail实现Email的发送,完整代码

    java mail实现Email的发送,完整代码 1.对应用程序配置邮件会话 首先, 导入jar <dependencies> <dependency> <groupId ...

  9. 使用spring 并加载模板发送Email 发邮件 java 模板

    以下例子是使用spring发送email,然后加载到固定的模板,挺好的,大家可以试试 需要使用到spring-context 包 和 com.springsource.org.apache.veloc ...

随机推荐

  1. 移动web HTML5使用photoswipe模仿微信朋友圈图片放大浏览

    先来几张效果图: 点击其中一张照片可放大,可支持图片文字描述: 同时支持分享功能: 支持手势放大缩小 使用js框架是PhotoSwipe. PhotoSwipe是一个图片放大插件,兼容pc和移动端,经 ...

  2. 如何使用Github仓库创建网站

    官方文档:https://help.github.com/categories/github-pages-basics/ 1.创建一个仓库 2.额外建立一个gh-pages分支 3.添加CNAME文件 ...

  3. Js处理json数据

    js中处理由ajax调用返回的json数据问题,可以通过使用JSON.parse方法将json字符串转化成javascript 对象.通过对象访问属性值. JSON.parse 只限于高版本的浏览器. ...

  4. nutch http file 截断问题

    问题: 列表页预计抽取 355+6 但实际只抽取到220条链接. 原因是nutch对http下载的内容的长度进行了限制. 解决方案:这里将这个属性扩大10倍. vim conf/nutch-defal ...

  5. [BZOJ 2048] [2009国家集训队]书堆 【调和级数】

    题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...

  6. HTML5 Geolocation

    http://diveintohtml5.info/geolocation.html http://msdn.microsoft.com/en-us/library/windows/apps/hh44 ...

  7. 了解php的session_start的工作原理

    一.php使用session_start开启SESSION 二.浏览器访问该php脚本时,将产生两个可能: 1.(客户端的提交的cookie没有找到PHPSESSID的键) 或 (在服务器端没有找到P ...

  8. Earth to developers: Grow up!

    这是篇老外写的文章,主题是针对网络上的一些宗教式的争论,作者叙述了他自己的一些观点.主要从以下6点做了陈述.为了表达的精确性,就直接用英文. 1. Reject dogmatic thinking a ...

  9. java.lang.Comparable接口

    转自:http://blog.csdn.net/zccst/article/details/5092920 java.lang.Comparable 接口 作者: zccst java.lang.Co ...

  10. Java程序员从笨鸟到菜鸟全部博客目录

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主 ...