java中javamail發送帶附件的郵件完成辦法。本站提示廣大學習愛好者:(java中javamail發送帶附件的郵件完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java中javamail發送帶附件的郵件完成辦法正文
本文實例講述了java中javamail發送帶附件的郵件完成辦法。分享給年夜家供年夜家參考。詳細剖析以下:
JavaMail,望文生義,供給給開辟者處置電子郵件相干的編程接口。它是Sun宣布的用來處置email的API。它可以便利地履行一些經常使用的郵件傳輸,JavaMail是可選包,是以假如須要應用的話你須要起首從java官網高低載。今朝最新版本是JavaMail1.5.0,上面我們來看看javamail發送帶附件的郵件實例
mail.java 代碼:
package mail;
import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class Mail {
//界說發件人、收件人、SMTP辦事器、用戶名、暗碼、主題、內容等
private String displayName;
private String to;
private String from;
private String smtpServer;
private String username;
private String password;
private String subject;
private String content;
private boolean ifAuth; //辦事器能否要身份認證
private String filename="";
private Vector file = new Vector(); //用於保留發送附件的文件名的聚集
/**
* 設置SMTP辦事器地址
*/
public void setSmtpServer(String smtpServer){
this.smtpServer=smtpServer;
}
/**
* 設置發件人的地址
*/
public void setFrom(String from){
this.from=from;
}
/**
* 設置顯示的稱號
*/
public void setDisplayName(String displayName){
this.displayName=displayName;
}
/**
* 設置辦事器能否須要身份認證
*/
public void setIfAuth(boolean ifAuth){
this.ifAuth=ifAuth;
}
/**
* 設置E-mail用戶名
*/
public void setUserName(String username){
this.username=username;
}
/**
* 設置E-mail暗碼
*/
public void setPassword(String password){
this.password=password;
}
/**
* 設置吸收者
*/
public void setTo(String to){
this.to=to;
}
/**
* 設置主題
*/
public void setSubject(String subject){
this.subject=subject;
}
/**
* 設置主體內容
*/
public void setContent(String content){
this.content=content;
}
/**
* 該辦法用於搜集附件名
*/
public void addAttachfile(String fname){
file.addElement(fname);
}
public Mail(){
}
/**
* 初始化SMTP辦事器地址、發送者E-mail地址、用戶名、暗碼、吸收者、主題、內容
*/
public Mail(String smtpServer,String from,String displayName,String username,String password,String to,String subject,String content){
this.smtpServer=smtpServer;
this.from=from;
this.displayName=displayName;
this.ifAuth=true;
this.username=username;
this.password=password;
this.to=to;
this.subject=subject;
this.content=content;
}
/**
* 初始化SMTP辦事器地址、發送者E-mail地址、吸收者、主題、內容
*/
public Mail(String smtpServer,String from,String displayName,String to,String subject,String content){
this.smtpServer=smtpServer;
this.from=from;
this.displayName=displayName;
this.ifAuth=false;
this.to=to;
this.subject=subject;
this.content=content;
}
/**
* 發送郵件
*/
public HashMap send(){
HashMap map=new HashMap();
map.put("state", "success");
String message="郵件發送勝利!";
Session session=null;
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpServer);
if(ifAuth){ //辦事器須要身份認證
props.put("mail.smtp.auth","true");
SmtpAuth smtpAuth=new SmtpAuth(username,password);
session=Session.getDefaultInstance(props, smtpAuth);
}else{
props.put("mail.smtp.auth","false");
session=Session.getDefaultInstance(props, null);
}
session.setDebug(true);
Transport trans = null;
try {
Message msg = new MimeMessage(session);
try{
Address from_address = new InternetAddress(from, displayName);
msg.setFrom(from_address);
}catch(java.io.UnsupportedEncodingException e){
e.printStackTrace();
}
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(content.toString(), "text/html;charset=gb2312");
mp.addBodyPart(mbp);
if(!file.isEmpty()){//有附件
Enumeration efile=file.elements();
while(efile.hasMoreElements()){
mbp=new MimeBodyPart();
filename=efile.nextElement().toString(); //選擇出每個附件名
FileDataSource fds=new FileDataSource(filename); //獲得數據源
mbp.setDataHandler(new DataHandler(fds)); //獲得附件自己並至入BodyPart
mbp.setFileName(fds.getName()); //獲得文件名異樣至入BodyPart
mp.addBodyPart(mbp);
}
file.removeAllElements();
}
msg.setContent(mp); //Multipart參加到函件
msg.setSentDate(new Date()); //設相信件頭的發送日期
//發送函件
msg.saveChanges();
trans = session.getTransport("smtp");
trans.connect(smtpServer, username, password);
trans.sendMessage(msg, msg.getAllRecipients());
trans.close();
}catch(AuthenticationFailedException e){
map.put("state", "failed");
message="郵件發送掉敗!毛病緣由:\n"+"身份驗證毛病!";
e.printStackTrace();
}catch (MessagingException e) {
message="郵件發送掉敗!毛病緣由:\n"+e.getMessage();
map.put("state", "failed");
e.printStackTrace();
Exception ex = null;
if ((ex = e.getNextException()) != null) {
System.out.println(ex.toString());
ex.printStackTrace();
}
}
//System.out.println("\n提醒信息:"+message);
map.put("message", message);
return map;
}
}
SmtpAuth.java 代碼:
package mail;
public class SmtpAuth extends javax.mail.Authenticator {
private String username,password;
public SmtpAuth(String username,String password){
this.username = username;
this.password = password;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(username,password);
}
}
存在的成績就是發送到163的郵件全體都帶有一個附件的符號,不論有無發送附件,感興致的同伙可以對此加以改良和完美。
願望本文所述對年夜家的Java法式設計有所贊助。