import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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;
/**
* <p>Title:SendMail.java</p>
* <p>Description>:邮件发送 设置成自己的邮箱和密码</p>
* <p>Create Time:Oct 29, 2010 5:40:53 PM</p>
* <p>@version: 5.0</p>
* <p>@author: LiWeichao</p>
*/
public class SendMail {
private static String host = "smtp.163.com"; //邮件发送协议
private static String authy = "true"; //是否验证用户
private static String mailForm = "plum_xh@163.com"; //配置发送邮箱
private static String mailName = "plum_xh"; //配置邮箱用户名
private static String mailPwd = "******"; //配置邮箱密码
/**
* 发送邮件
* @param mailTo 收件人(多个收件人用【,】分割)
* @param subject 主题
* @param bodyContent 内容
* @param fileNames 附件集合Url
*/
public static void sendEmail(String mailTo, String subject, String bodyContent,String[] fileNames) {
//获取系统Properties
Properties props = System.getProperties();
//将您的SMTP服务器名添加到mail.smtp.host属性中 (mail.smtp.auth系统是否进行邮箱验证)
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", authy);
// Properties props=new Properties();
// props.setProperty("host", host);
// props.setProperty("authy", authy);
try {
//获取基于Properties session对象
Session session = Session.getDefaultInstance(props, null);
Multipart mp = new MimeMultipart();
//从session中创建一个MimeMessage
MimeMessage message = new MimeMessage(session);
//设置信息from域
message.setFrom(new InternetAddress(mailForm));
//设置to域 支持邮件群发(邮箱之间【,】分割)
String[] arr = mailTo.split(",");
int receiverCount = arr.length;
if (receiverCount > 0) {
InternetAddress[] address = new InternetAddress[receiverCount];
for (int i = 0; i < receiverCount; i++) {
address[i] = new InternetAddress(arr[i].trim());
}
message.setRecipients(Message.RecipientType.TO, address);
}
//设置信息主题
message.setSubject(subject==null || subject.equals("")?"<无标题>":subject);
//添加附件 支持多个附件发送
Vector file=getFiles(fileNames);
Enumeration efile = file.elements();
while (efile.hasMoreElements()) {
MimeBodyPart mbp = new MimeBodyPart();
// 选择出每一个附件名
String filename = efile.nextElement().toString();
if(filename==null||filename=="")continue;
// 得到数据源
FileDataSource fds = new FileDataSource(filename);
BodyPart bp2 = new MimeBodyPart();
bp2.setFileName(fds.getName());
bp2.setText(fds.getName());
bp2.setDataHandler(new DataHandler(fds));
bp2.setHeader("Content-ID", "<" + fds.getName() + ">");
mp.addBodyPart(bp2);
}
/** 邮件主体 */
if (!(bodyContent == null || bodyContent.equals(""))) {
BodyPart bp = new MimeBodyPart();
bp.setContent(bodyContent==null?"":bodyContent, "text/html;charset=GB2312");
mp.addBodyPart(bp);
}
file.removeAllElements();
//设置信息内容
message.setContent(mp);
Transport trans = session.getTransport("smtp");//指定的协议
//连接服务器
trans.connect(host, mailName, mailPwd);
//发送信息
trans.sendMessage(message, message.getAllRecipients());
trans.close();
} catch (AddressException e) {
System.out.println("收件人地址错误:" + e.getMessage());
e.printStackTrace();
} catch (MessagingException e) {
System.out.println("链接服务器失败:" + e.getMessage());
e.printStackTrace();
}
}
/**
* 添加附件URL
* @param fileUrl
*/
private static Vector getFiles(String[] fileNames) {
Vector file = new Vector(); //附件集合
for (int i = 0; i < fileNames.length; i++) {
file.addElement(fileNames[i]);
}
return file;
}
}
下面给提供个Demo供参考学习