程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中javamail發送帶附件的郵件完成辦法

java中javamail發送帶附件的郵件完成辦法

編輯:關於JAVA

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法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved