Java发送邮件示例
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Multipart;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 邮件发送工具类
*
*
*/
public class MailUtils {
private static final Logger logger = LoggerFactory.getLogger(MailUtils.class);
private MimeMessage mimeMsg = null; //邮件内容
private MailMessage message = null; //邮件对象
private Session session = null;
private Properties props = null; //邮件服务器信息
private Multipart mp = null;
public MailUtils() {}
public void sendMail(MailMessage message, String smtpServer, boolean needAuth) throws Exception {
this.message = message;
mailSetting(smtpServer, needAuth);
// modify by wy for 安全扫描
Transport transport =null;
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Session mailSession = Session.getInstance(props, null);
transport = mailSession.getTransport("smtp");
transport.connect((String) props.getProperty("mail.smtp.host"), message.getUsername(), message.getPassword());
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(javax.mail.Message.RecipientType.TO));
if (message.getAddrsCopyTo() != null) {
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(javax.mail.Message.RecipientType.CC));
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new Exception("邮件发送失败");
}
finally{
if(null != transport){
transport.close();
}
}
// end modify by wy
}
private void mailSetting(String smtpServer, boolean needAuth) throws Exception {
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", smtpServer);
if (needAuth) {
props.put("mail.smtp.auth", "true");
}
try {
session = Session.getDefaultInstance(props, null);
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
} catch (Exception e) {
logger.error("邮件初始化失败,错误信息:", e);
throw new Exception("邮件初始化失败.");
}
if (message == null) {
throw new Exception("配置邮件信息为空.");
}
try {
mimeMsg.setSubject(message.getSubject());
BodyPart bp = new MimeBodyPart();
bp.setContent(message.getContent(), "text/html;charset=gb2312");
mp.addBodyPart(bp);
mimeMsg.setFrom(new InternetAddress(message.getAddrFrom()));
//修改为支持多个收件人
String addTo = message.getAddrTo();
String[] addTos = addTo.split(";");
InternetAddress[] ias = new InternetAddress[addTos.length];
for (int i = 0; i < addTos.length; i++) {
ias[i] = new InternetAddress(addTos[i]);
}
mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO, ias);
if (message.getAddrsCopyTo() != null) {
mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC, InternetAddress.parse(message.getAddrsCopyTo()));
}
} catch (Exception e) {
logger.error("邮件初始化失败,错误信息:" + e.getMessage(),e);
throw new Exception("邮件初始化失败.");
}
}
}
import java.io.Serializable;
/**
* 邮件
*
*/
public class MailMessage implements Serializable {
private static final long serialVersionUID = -8538474071920662118L;
private String subject;
private String content;
private String addrFrom;
private String addrTo;
private String addrsCopyTo;
private String fileAffix;
private String username;
private String 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 getAddrFrom() {
return addrFrom;
}
public void setAddrFrom(String addrFrom) {
this.addrFrom = addrFrom;
}
public String getAddrTo() {
return addrTo;
}
public void setAddrTo(String addrTo) {
this.addrTo = addrTo;
}
public String getAddrsCopyTo() {
return addrsCopyTo;
}
public void setAddrsCopyTo(String addrsCopyTo) {
this.addrsCopyTo = addrsCopyTo;
}
public String getFileAffix() {
return fileAffix;
}
public void setFileAffix(String fileAffix) {
this.fileAffix = fileAffix;
}
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;
}
}