使用Java发送邮件(javax.mail)
package test;
import java.io.File;
import java.util.Vector;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.BodyPart;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.activation.DataSource;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeBodyPart;
import javax.activation.FileDataSource;
import javax.activation.DataHandler;
public class SendEMail
{
/**
* @param host邮件服务器的地址
* @param userName 用户名(匿名允许 可以为空)
* @param password 用户口令(匿名允许 可以为空)
* @param addressee 收信人
* @param addresser 发信人
* @param subject 邮件标题
* @param contentText 邮件内容
* files 附件(路径)
*/
public static void sendEMail(String host,String userName,String password,String addressee,String addresser,String subject,String contentText,Vector files)
{
try{
//创建 properties(里面包含了发送邮件服务器的地址)
Properties mailProps = new Properties();
mailProps.setProperty("mail.smtp.host", host);
//创建Session
Session mailSession = null;
if( userName != null && userName.trim().length() > 0 ){
mailProps.put("mail.smtp.auth","true");
if(password==null) password=""; //
mailSession = Session.getInstance(mailProps,new MyAuth(userName,password));
}else{
//mailSession = Session.getInstance(mailProps,null);
mailSession = Session.getDefaultInstance(mailProps);
}
//创建message(包含了邮件众多有的部件的对象)
MimeMessage message = new MimeMessage(mailSession);
//设置发信人
message.setFrom(new InternetAddress(addresser));
//设置收信人( 参数 BCC(blind carbon copy) CC(carbon copy) TO(primary))
message.setRecipient(Message.RecipientType.TO,new InternetAddress(addressee));
//设置邮件标题
message.setSubject(subject);
//邮件内容(不含有附件)
if(files == null){
message.setText(contentText);
}else{
//创建 Mimemultipart添加内容(可包含多个附件)
MimeMultipart multi = new MimeMultipart();
//MimeBodyPart(用于信件内容/附件)
BodyPart textBodyPart = new MimeBodyPart();
textBodyPart.setText(contentText);
//添加到MimeMultipart对象中
multi.addBodyPart(textBodyPart);
//创建FileDAtaSource(用于添加附件)
for(int j=0; j<files.size(); j++)
{
try{
File file = (File)files.elementAt(j);
String fname = file.getName();
FileDataSource fds = new FileDataSource(file);
BodyPart fileBodyPart = new MimeBodyPart();
//字符流形式装入文件
fileBodyPart.setDataHandler(new DataHandler(fds));
fileBodyPart.setFileName("fname");//设置附件文件名
multi.addBodyPart(fileBodyPart);
message.setContent(multi);
}catch(Exception er){
er.printStackTrace();
}
}
}
//保存改变
message.saveChanges();
//发送邮件(Transport类是SMTP的邮件发送协议)
Transport.send(message);
}catch(Exception ex){
ex.printStackTrace();
}
}
//测试/*
public static void main(String[] args)
{
Vector files = new Vector();
files.addElement(new File("D://Relucent.txt"));
SendEMail.sendEMail("127.0.0.1",
null,
null,
"redrainyi@test.com",
"relucent@test.com",
"测试邮件发送",
"收到了没有?看看附件",
files);
}//*/
}