package cn.mailsend.test;
public class SendTextAction {
private String to;
private String qq;
private String password;
private String subject;
private String content;
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
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;
}
public String execute() {
MailSenderInfo mailInfo=new MailSenderInfo();
mailInfo.setMailServerHost("smtp.qq.com");
mailInfo.setMailServerPort("25");
mailInfo.setValuable(true);
mailInfo.setFromAddress(this.qq);
mailInfo.setToAddress(this.to);
mailInfo.setPassWord("ret4324234d");//使用的是qq分配的授权码,而不是我们登录的密码
mailInfo.setSubject(this.subject);
mailInfo.setContent(this.content);
boolean isSend=SimpleMailSender.sendTextMail(mailInfo);
if(isSend) {
return "success";
}else {
System.out.println("发送失败");
return "fail";
}
}
}
package cn.mailsend.test;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
//密码验证器
public class MyAuthenticator extends Authenticator{
private String username;
private String password;
public MyAuthenticator() {};
public MyAuthenticator(String username,String password) {
this.username=username;
this.password=password;
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
}
package cn.mailsend.test;
import java.util.Properties;
//邮件实体类
public class MailSenderInfo {
//发送邮件服务器
private String mailServerHost;
//发送邮件服务器端口号
private String mailServerPort="25";
//发件人地址
private String FromAddress;
//收件人地址
private String toAddress;
//发件人密码
private String passWord;
//验证密码有效性
private Boolean valuable=false;
//邮件发送主题
private String subject;
//邮件发送内容
private String content;
//设置发件人的邮件信息,创建Session时使用
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.starttls.enable", "true");//向下兼容一定要设置不然发送不了
p.put("mail.smtp.auth", valuable?"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 String getFromAddress() {
return FromAddress;
}
public void setFromAddress(String fromAddress) {
FromAddress = fromAddress;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public Boolean getValuable() {
return valuable;
}
public void setValuable(Boolean valuable) {
this.valuable = valuable;
}
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 cn.mailsend.test;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
//构建发送邮件体
public class MailSender {
// 发送文本格式的邮件
public static Boolean sendTextMail(MailSenderInfo mailInfo) {
MyAuthenticator myauth=null;//定义密码验证对象
Properties properties=mailInfo.getProperties();//创建属性文件对象
// 如果需要身份认证,则创建一个密码验证器
if(mailInfo.getValuable()) {
myauth=new MyAuthenticator(mailInfo.getFromAddress(),mailInfo.getPassWord());
}
// 根据发件人的服务器信息和发件人用户名和密码构造一个发送邮件的session
Session session=Session.getInstance(properties, myauth);
try {
// 根据session创建一个邮件消息
Message mailMessage=new MimeMessage(session);
// 创建邮件发送者地址
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());
//设置邮件消息的内容
mailMessage.setText(mailInfo.getContent());
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
}
}
}
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>邮件发送</h1></br>
<form action="sendtext">
发件人:<input name="qq" type="text"></br>
收件人:<input name="to" type="text"></br>
主  题:<input name="subject" type="text"></br>
内  容:<input name="content" type="text"></br></br>
       <input type="submit" value="发送">
</form>
</s:form>
</body>
</html>