package cn.mail;
import java.security.Security;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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;
/**
* 用于发送邮件
* @author
*
*/
public class SendMail {
/**
* 用于发送不带附件的邮件
*/
public void send() {
// 邮件服务器
String smtpHost = "smtp.gmail.com";
// 源邮箱地址
String mFrom = "
[email protected]";
// 收件箱地址
String mTo = "
[email protected]";
//验证用户名(@前部分)和密码
final String mName = "xxxxx";
final String mPwd = "yyyyy";
// 邮件主题
String subject = "mailTitle";
// 邮件内容
String mText = "textContent";
// 目的邮箱列表取得
// 邮件发送
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Properties props = new Properties();
// 设置发送邮件的邮件服务器的属性
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
// 用刚刚设置好的props对象构建一个session,用用户名和密码通过验证
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mName, mPwd);
}
});
// 供调试使用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true);
// 用session为参数定义消息对象
Message message = new MimeMessage(session);
try {
// 加载发件人地址
message.setFrom(new InternetAddress(mFrom));
// 加载收件人地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mTo, false));
// 加载标题
message.setSubject(subject);
// 加载内容
message.setContent(mText, "text/plain");
message.saveChanges();
// 发送
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
// 邮件未发送成功
}
}
/**
* 用于发送带单个附件的邮件
*/
public void sendFile() {
// 邮件服务器
String smtpHost = "smtp.gmail.com";
// 源邮箱地址
String mFrom = "
[email protected]";
// 收件箱地址
String mTo = "
[email protected]";
//验证用户名(@前部分)和密码
final String mName = "xxxxx";
final String mPwd = "yyyyy";
// 邮件主题
String subject = "mailTitle";
// 邮件内容
String mText = "textContent";
// 邮件发送
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Properties props = new Properties();
// 设置发送邮件的邮件服务器的属性
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
// 用刚刚设置好的props对象构建一个session,用用户名和密码通过验证
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mName, mPwd);
}
});
// 供调试使用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true);
// 用session为参数定义消息对象
Message message = new MimeMessage(session);
try {
// 加载发件人地址
message.setFrom(new InternetAddress(mFrom));
// 加载收件人地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mTo, false));
// 加载标题
message.setSubject(subject);
// 加载内容
message.setContent(mText, "text/plain");
//整个邮件对象
Multipart mp = new MimeMultipart();
//消息内容对象
MimeBodyPart mbp = new MimeBodyPart();
//消息内容对象中加入文本内容
mbp.setContent(mText, "text/html;charset=gb2312");
//整个邮件对象中加入消息内容对象(即文本内容部分)
mp.addBodyPart(mbp);
//得到数据源:直接给出文件的绝对路径
FileDataSource fds = new FileDataSource("D:\\javamail\\aa.xls");
//得到附件本身并放入BodyPart
mbp.setDataHandler(new DataHandler(fds));
//得到文件名同样放入BodyPart
mbp.setFileName(fds.getName());
//整个邮件对象中加入消息内容对象(即附件内容部分)
mp.addBodyPart(mbp);
//整个邮件对象加入到信件
message.setContent(mp);
message.saveChanges();
// 发送
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
// 邮件未发送成功
}
}
public static void main(String[] args) {
SendMail ml = new SendMail();
//发送不带附件的邮件
ml.send();
//发送带单个附件的邮件
ml.sendFile();
System.out.println("SEND SUCCESS!");
}
}