您的位置:首页 > 编程语言 > Java开发

Java发送电子邮件的完整代码,可发送附件

2016-05-19 10:41 369 查看
工具类供参考使用。

package com.gj5u.publics.util;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
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 Rex
*
*/
public class SendEmailUtil
{
private String HOST;
private String PROTOCOL = "POP3";
private int PORT = 25;
private String SENDER;
private String SENDERPWD;

/**
* 初始化
*
* @param smtpHost
*            SMTP主机地址
* @param port
*            端口号
* @param sendaddress
*            邮件发送者地址
* @param sendpwd
*            邮件发送者密码
*/
public SendEmailUtil(String smtpHost, Integer port, String sendaddress, String sendpwd)
{
HOST = smtpHost;
if (EmptyUtil.isEmpty(port))
{
PORT = port;
}
SENDER = sendaddress;
SENDERPWD = sendpwd;
}

/**
* 获取Session
*
* @return
*/
private Session getSession()
{
Properties props = new Properties();
props.put("mail.smtp.localhost", "avatech");// 随便写一个
props.put("mail.smtp.host", HOST);
props.put("mail.store.protocol", PROTOCOL);
props.put("mail.smtp.port", Integer.valueOf(PORT));
props.put("mail.smtp.auth", "true");
Authenticator authenticator = new Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(SENDER, SENDERPWD);
}
};
Session session = Session.getDefaultInstance(props, authenticator);
return session;
}

/**
* 发送邮件密送和抄送
*
* @param toEmail
*            接收人列表
* @param ccEmail
*            抄送人列表
* @param bccEmail
*            密送人列表
* @param content
*            邮件内容
* @param emailTitle
*            邮件标题
* @return 是否发送成功
*/
public boolean sendMail(List<String> toEmail, List<String> ccEmail, List<String> bccEmail, String content, String emailTitle)
{
try
{
Message msg = new MimeMessage(getSession());
msg.setFrom(new InternetAddress(SENDER));
if (EmptyUtil.isNotEmpty(toEmail))
{
for (String strto : toEmail)
{
InternetAddress[] tes = { new InternetAddress(strto) };
msg.addRecipients(Message.RecipientType.TO, tes);
}
}
if (EmptyUtil.isNotEmpty(ccEmail))
{
for (String strcc : ccEmail)
{
InternetAddress[] tes = { new InternetAddress(strcc) };
msg.addRecipients(Message.RecipientType.CC, tes);
}
}
if (EmptyUtil.isNotEmpty(bccEmail))
{
for (String strbcc : bccEmail)
{
InternetAddress[] tes = { new InternetAddress(strbcc) };
msg.addRecipients(Message.RecipientType.BCC, tes);
}
}
msg.setSubject(emailTitle);
msg.setSentDate(new Date());
msg.setContent(content, "text/html;charset=utf-8");
Transport.send(msg);
return true;
}
catch (AddressException e)
{
FileWriteAndReadUtil.writeFile("AddressException:" + e.getMessage(), true);
return false;
}
catch (MessagingException e)
{
FileWriteAndReadUtil.writeFile("MessagingException:" + e.getMessage(), true);
e.printStackTrace();
}
return false;
}

/**
* 发送邮件带附件
*
* @param toEmail
*            接收人列表
* @param ccEmail
*            抄送人列表
* @param bccEmail
*            密送人列表
* @param content
*            邮件内容
* @param emailTitle
*            邮件标题
* @param fileList
*            附件列表
* @return 是否发送成功
*/
public boolean sendMail(List<String> toEmail, List<String> ccEmail, List<String> bccEmail, String content, String emailTitle, List<String> fileList)
{
try
{
MimeMessage msg = new MimeMessage(getSession());
msg.setFrom(new InternetAddress(SENDER));
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
msg.setContent(multipart);
if (EmptyUtil.isNotEmpty(toEmail))
{
for (String strto : toEmail)
{
InternetAddress[] tes = { new InternetAddress(strto) };
msg.addRecipients(Message.RecipientType.TO, tes);
}
}
if (EmptyUtil.isNotEmpty(ccEmail))
{
for (String strcc : ccEmail)
{
InternetAddress[] tes = { new InternetAddress(strcc) };
msg.addRecipients(Message.RecipientType.CC, tes);
}
}
// 有附件添加附件
if (EmptyUtil.isNotEmpty(fileList))
{
for (String strcc : fileList)
{
MimeBodyPart mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(strcc);
DataHandler dh = new DataHandler(fds);
mbp.setDataHandler(dh);
mbp.setFileName(MimeUtility.encodeWord(FileUtil.getFileName(strcc)));
multipart.addBodyPart(mbp);
}
}
if (EmptyUtil.isNotEmpty(bccEmail))
{
for (String strbcc : bccEmail)
{
InternetAddress[] tes = { new InternetAddress(strbcc) };
msg.addRecipients(Message.RecipientType.BCC, tes);
}
}
msg.setContent(multipart);
msg.saveChanges();
// 添加邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(content, "text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);
msg.setSubject(emailTitle);
msg.setSentDate(new Date());
Transport.send(msg);
return true;
}
catch (AddressException e)
{
}
catch (MessagingException e)
{
}
catch (UnsupportedEncodingException e)
{
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息