package com.ds.util;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 邮件发送
* @author zhanghaowei
*
*/
public class SendMail {
/**
* 发送email邮件(不支持exchange类型的邮箱发送邮件)
* @param sendEmailHost 发送邮箱host(smt.163.com)
* @param sendEmailUser 发送邮箱的账号(fsr@163.com)
* @param sendEmailPassword 发送邮箱密码(email password)
* @param receiveEmailUser 接受邮箱账号(receive@qq.com)
* @param subject 发送邮件的标题
* @param content 发送邮件的内容
* @throws MessagingException
*/
public static void sendSimpleEmail(
String sendEmailHost,
String sendEmailUser,
String sendEmailPassword,
String receiveEmailUser,
String subject,
String content
)
throws MessagingException{
// 配置发送邮件的环境属性
final Properties props = new Properties();
// 表示SMTP发送邮件,需要进行身份验证
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", sendEmailHost);
// 发件人的账号
props.put("mail.user", sendEmailUser);
// 访问SMTP服务时需要提供的密码
props.put("mail.password", sendEmailPassword);
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用环境属性和授权信息,创建邮件会话
Session mailSession = Session.getInstance(props, authenticator);
// 创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
InternetAddress form = new InternetAddress(
props.getProperty("mail.user"));
message.setFrom(form);
// 设置收件人
InternetAddress to = new InternetAddress(receiveEmailUser);
message.setRecipient(RecipientType.TO, to);
// 设置抄送
//InternetAddress cc = new InternetAddress("luo_aaaaa@yeah.net");
// message.setRecipient(RecipientType.CC, cc);
// 设置密送,其他的收件人不能看到密送的邮件地址
// InternetAddress bcc = new InternetAddress("aaaaa@163.com");
// message.setRecipient(RecipientType.CC, bcc);
// 设置邮件标题
message.setSubject(subject);
// 设置邮件的内容体
message.setContent(content, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
}
/**
* 仅支持exchange类型的邮箱发送邮件
* @param sendEmailHost exchange类型、发送邮箱host(MULTIEX1.gold.multi.com)
* @param sendEmailUser 发送邮箱的账号(fsr)
* @param sendEmailPassword 发送邮箱密码(email password)
* @param receiveEmailUser 接受邮箱账号(receive@qq.com)
* @param subject 发送邮件的标题
* @param content 发送邮件的内容
* @throws MessagingException
*/
public static void sendMessage(
String sendEmailHost,
String sendEmailUser,
String sendEmailPassword,
String receiveEmailUser,
String subject,
String content)
throws NoSuchProviderException, MessagingException
{
// Create a session
Session session = Session.getDefaultInstance(new Properties());
// Create and connect to the transport
Transport transport = session.getTransport("jbexTransport");
transport.connect(sendEmailHost, sendEmailUser, sendEmailPassword);
// Recipients
Address[] recipients = new Address[] {new InternetAddress(receiveEmailUser)};
// Create a message
Message msg = new MimeMessage(session);
msg.setRecipients(Message.RecipientType.TO, recipients);
msg.setSubject(subject);
msg.setContent(content, "text/html;charset=UTF-8");
msg.saveChanges();
// Send the message
transport.sendMessage(msg, recipients);
// Disconnect
transport.close();
}
}