使用Java程序发送Email

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

使用到的包有 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 [email protected]
*/
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 [email protected]
*
*/
public class Test {
public static void main(String[] args) {

Mail mail = new Mail();
mail.setTo("[email protected]");
mail.setFrom("[email protected]");// 你的邮箱
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

时间: 2024-07-29 08:19:35

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

python程序发送email的源码

把开发过程经常用的代码段收藏起来,下边代码段是关于python程序发送email的的代码,应该是对码农们有一些好处. server = 'smtp.gmail.com:587'; #imports from time import sleep; import smtplib; from email.mime.application import MIMEApplication from email.mime.text import MIMEText; from email.mime.multip

java程序发送内嵌图片、带附件邮件

package mail; import java.io.UnsupportedEncodingException;import java.util.Properties; import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.MessagingExc

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

最近在准备一个项目,想的登录时候用手机验证,就通过上网查阅了一下手机验证的实现方法,原来超级简单,下面将一步一步介绍. 1.去中国网建注册一个账号密码,首次注册送五条免费短信和3条免费彩信.具体的网址是 http://www.smschinese.cn/api.shtml 2.注册完成之后进去查看给你的短信秘钥 3.有了这个秘钥就超级简单了,导入jar包,下面的代码第一个基本不用该,直接粘贴,第二个改成自己的信息就可以了 1 package duanxinyanzheng; 2 3 4 impo

java发送email

package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.Se

【转】使用java程序模拟页面发送http的post请求

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

ZendFramework2学习笔记 发送email

ZF2中发送email有2种方式,一是通过系统的邮件程序发送email,二是通过smtp协议使用远程的smtp服务器发送email. 相关的类有: use Zend\Mail\Message;//email消息类 use Zend\Mail\Transport\Sendmail;//通过系统邮件程序的发送类 use Zend\Mail\Transport\Smtp;//通过smtp协议使用远程smtp服务器的发送类 use Zend\Mail\Transport\SmtpOptions;//设置

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

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

java 发送 Email

private static void sendMail(String mail, String mailContext) { try { String context = FileUtil.getFileContent("lostpassEmail.html"); HtmlEmail email = new HtmlEmail(); email.setHostName("smtp.163.com"); email.setSmtpPort(25); email.se

Java发送Email—使用org.apache.commons.mail

上篇文章介绍了自己手动的实现发送普通Email.HTML类型的Email以及带附件的Email.其实apache的commons项目下有个email子项目,它对JavaMail API进行了封装,用起来特变方便.下面就简单介绍. 1.    首先配置需要的jar包 需要将mail.jar和commons-email.jar添加到我们的CLASSPATH中即可,如下图: 2.    发送普通邮件 /** * 用org.apache.commons.mail发送普通邮件 * * @author wa