Java 发送邮件
EmailInfo.java
import java.io.File;
public class EmailInfo {
private String mailhost;
private String mailport="25";
private String username;
private String password;
private String fromAddress;
private String []toAddress;
private boolean validate =false;
private String subject;
private String content;
private File attFile;
private String attFilePath;
public String getMailhost() {
return mailhost;
}
public void setMailhost(String mailhost) {
this.mailhost = mailhost;
}
public String getMailport() {
return mailport;
}
public void setMailport(String mailport) {
this.mailport = mailport;
}
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;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String[] getToAddress() {
return toAddress;
}
public void setToAddress(String[] toAddress) {
this.toAddress = toAddress;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
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 File getAttFile() {
return attFile;
}
public void setAttFile(File attFile) {
this.attFile = attFile;
}
public String getAttFilePath() {
return attFilePath;
}
public void setAttFilePath(String attFilePath) {
this.attFilePath = attFilePath;
}
}
MyAuthenticator.java
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MyAuthenticator extends Authenticator {
private String username=null;
private String password=null;
public MyAuthenticator() {
// TODO Auto-generated constructor stub
}
public MyAuthenticator(String username, String password){
this.username=username;
this.password=password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generated method stub
return new PasswordAuthentication(username, password);
}
}
EmailSender.java
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
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;
import com.edu.bjfu.it.timesys.config.SystemInfo;
public class EmailSender {
private EmailInfo emailInfo;
private SystemInfo sysinfo;
public EmailSender(){};
public EmailSender(SystemInfo sysinfo, String emailContent) {
this.sysinfo = sysinfo;
emailInfo = new EmailInfo();
String fromEmail = this.sysinfo.getPersonEmail();
if (fromEmail.indexOf("163.com") != -1) {
emailInfo.setMailhost("smtp.163.com");
emailInfo.setMailport("25");
emailInfo.setValidate(true);
} else if (fromEmail.indexOf("qq.com") !=-1) {
emailInfo.setMailhost("smtp.qq.com");
emailInfo.setMailport("25");
emailInfo.setValidate(true);
}
emailInfo.setUsername(fromEmail);
emailInfo.setPassword(this.sysinfo.getPersonPwd());
//File attFile=new File("D:\\mail.jar");
//emailInfo.setAttFile(attFile);
emailInfo.setFromAddress(fromEmail);
emailInfo.setToAddress(this.sysinfo.getSupervisionEmail().split(","));
emailInfo.setSubject("TimerSystem ");
emailInfo.setContent(emailContent);
}
/**
*
* @param emailInfo
* @return
*/
public boolean sendHtmlEmail(){
MyAuthenticator authenticator=null;
Properties prop=getProperties(this.emailInfo);
if(this.emailInfo.isValidate()){
authenticator = new MyAuthenticator(this.emailInfo.getUsername(), this.emailInfo.getPassword());
}
Session session = Session.getDefaultInstance(prop, authenticator);
try {
Message message = new MimeMessage(session);
Address fromAddress = new InternetAddress(this.emailInfo.getFromAddress());
String []toAddre=this.emailInfo.getToAddress();
//emailInfo.getToAddress();
Address []toAddress = new InternetAddress[toAddre.length];
for(int i=0;i<toAddre.length;i++){
// System.out.println("run here");
// System.out.println(toAddre[i]);
toAddress[i]=new InternetAddress(toAddre[i]);
System.out.println(toAddress[i].toString());
}
message.setFrom(fromAddress);
message.setRecipients(Message.RecipientType.TO,toAddress);
message.setSubject(this.emailInfo.getSubject());
message.setSentDate(new Date());
Transport transport;
transport=session.getTransport("smtp");
transport.connect(this.emailInfo.getMailhost(), this.emailInfo.getUsername(), this.emailInfo.getPassword());
BodyPart mbp=new MimeBodyPart();
Multipart multipart=new MimeMultipart();
mbp.setContent(this.emailInfo.getContent(), "text/html;charset=UTF-8");
multipart.addBodyPart(mbp);
if(this.emailInfo.getAttFile() !=null){
mbp=new MimeBodyPart();
DataSource source =new FileDataSource(this.emailInfo.getAttFile());
mbp.setDataHandler(new DataHandler(source));
mbp.setFileName(this.emailInfo.getAttFile().getName());
multipart.addBodyPart(mbp);
}
message.setContent(multipart);
transport.sendMessage(message, toAddress);
transport.close();
return true ;
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
return false;
}
public Properties getProperties(EmailInfo emailInfo){
Properties prop=new Properties();
prop.put("mail.smtp.host",emailInfo.getMailhost());
prop.put("mail.smtp.port", emailInfo.getMailport());
prop.put("mail.smtp.auth", emailInfo.isValidate()?"true":"fasle");
return prop;
}
}