欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中javamail發(fā)送帶附件的郵件實現(xiàn)方法

 更新時間:2015年01月04日 09:43:58   投稿:shichen2014  
這篇文章主要介紹了java中javamail發(fā)送帶附件的郵件實現(xiàn)方法,較為詳細的分析了JavaMail發(fā)送郵件的用法,是非常實用的技巧,需要的朋友可以參考下

本文實例講述了java中javamail發(fā)送帶附件的郵件實現(xiàn)方法。分享給大家供大家參考。具體分析如下:

JavaMail,顧名思義,提供給開發(fā)者處理電子郵件相關(guān)的編程接口。它是Sun發(fā)布的用來處理email的API。它可以方便地執(zhí)行一些常用的郵件傳輸,JavaMail是可選包,因此如果需要使用的話你需要首先從java官網(wǎng)上下載。目前最新版本是JavaMail1.5.0,下面我們來看看javamail發(fā)送帶附件的郵件實例

mail.java 代碼:

復制代碼 代碼如下:
package mail; 
 
import java.util.* ; 
import java.io.* ; 
import javax.mail.* ; 
import javax.mail.internet.* ; 
import javax.activation.* ; 
public class Mail { 
    //定義發(fā)件人、收件人、SMTP服務(wù)器、用戶名、密碼、主題、內(nèi)容等 
    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; //服務(wù)器是否要身份認證 
    private String filename=""; 
    private Vector file = new Vector(); //用于保存發(fā)送附件的文件名的集合
    
    /**
     * 設(shè)置SMTP服務(wù)器地址
     */ 
    public void setSmtpServer(String smtpServer){ 
        this.smtpServer=smtpServer; 
    } 
    
    /**
     * 設(shè)置發(fā)件人的地址
     */ 
    public void setFrom(String from){ 
        this.from=from; 
    } 
    /**
     * 設(shè)置顯示的名稱
     */ 
    public void setDisplayName(String displayName){ 
        this.displayName=displayName; 
    } 
    
    /**
     * 設(shè)置服務(wù)器是否需要身份認證
     */ 
    public void setIfAuth(boolean ifAuth){ 
        this.ifAuth=ifAuth; 
    } 
    
    /**
     * 設(shè)置E-mail用戶名
     */ 
    public void setUserName(String username){ 
        this.username=username; 
    } 
    
    /**
     * 設(shè)置E-mail密碼
     */ 
    public void setPassword(String password){ 
        this.password=password; 
    } 
    
    /**
     * 設(shè)置接收者
     */ 
    public void setTo(String to){ 
        this.to=to; 
    } 
    
    /**
     * 設(shè)置主題
     */ 
    public void setSubject(String subject){ 
        this.subject=subject; 
    } 
    
    /**
     * 設(shè)置主體內(nèi)容
     */ 
    public void setContent(String content){ 
        this.content=content; 
    } 
    
    /**
     * 該方法用于收集附件名
     */ 
    public void addAttachfile(String fname){ 
        file.addElement(fname); 
    } 
    
    public Mail(){ 
        
    } 
    
    /**
     * 初始化SMTP服務(wù)器地址、發(fā)送者E-mail地址、用戶名、密碼、接收者、主題、內(nèi)容
     */ 
    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服務(wù)器地址、發(fā)送者E-mail地址、接收者、主題、內(nèi)容
     */ 
    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; 
    } 
 
    /**
     * 發(fā)送郵件
     */ 
    public HashMap send(){ 
        HashMap map=new HashMap(); 
        map.put("state", "success"); 
        String message="郵件發(fā)送成功!"; 
        Session session=null; 
        Properties props = System.getProperties(); 
        props.put("mail.smtp.host", smtpServer); 
        if(ifAuth){ //服務(wù)器需要身份認證 
            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); //得到數(shù)據(jù)源 
                    mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart 
                    mbp.setFileName(fds.getName());  //得到文件名同樣至入BodyPart 
                    mp.addBodyPart(mbp); 
                }   
                file.removeAllElements();     
            }  
            msg.setContent(mp); //Multipart加入到信件 
            msg.setSentDate(new Date());     //設(shè)置信件頭的發(fā)送日期 
            //發(fā)送信件 
            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="郵件發(fā)送失敗!錯誤原因:\n"+"身份驗證錯誤!"; 
             e.printStackTrace();  
        }catch (MessagingException e) { 
             message="郵件發(fā)送失?。″e誤原因:\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);
    }  
}

存在的問題就是發(fā)送到163的郵件全部都帶有一個附件的符號,不管有沒有發(fā)送附件,感興趣的朋友可以對此加以改進和完善。

希望本文所述對大家的Java程序設(shè)計有所幫助。

相關(guān)文章

  • Java源碼解析HashMap的tableSizeFor函數(shù)

    Java源碼解析HashMap的tableSizeFor函數(shù)

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap的tableSizeFor函數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java處理按鈕點擊事件的方法

    java處理按鈕點擊事件的方法

    下面小編就為大家?guī)硪黄猨ava處理按鈕點擊事件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Springboot詳解整合SpringSecurity實現(xiàn)全過程

    Springboot詳解整合SpringSecurity實現(xiàn)全過程

    Spring Security基于Spring開發(fā),項目中如果使用Springboot作為基礎(chǔ),配合Spring Security做權(quán)限更加方便,而Shiro需要和Spring進行整合開發(fā)。因此作為spring全家桶中的Spring Security在java領(lǐng)域很常用
    2022-07-07
  • 一文詳解Spring加載properties文件的方式

    一文詳解Spring加載properties文件的方式

    這篇文章將通過一些示例為大家詳細介紹Spring加載properties文件的幾種方式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-06-06
  • IP查詢系統(tǒng)的異步回調(diào)案例

    IP查詢系統(tǒng)的異步回調(diào)案例

    本文主要分享了IP查詢系統(tǒng)的異步回調(diào)案例,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • java:程序包javax.servlet.http不存在問題解決

    java:程序包javax.servlet.http不存在問題解決

    這篇文章主要給大家介紹了關(guān)于java:程序包javax.servlet.http不存在問題解決的相關(guān)資料,如果引用的包依賴的庫文件缺失或版本不匹配,就會導致"Java 程序包不存在"的錯誤,需要的朋友可以參考下
    2023-10-10
  • spring boot hutool整合email的詳細過程

    spring boot hutool整合email的詳細過程

    這篇文章主要介紹了spring boot hutool整合email的相關(guān)知識,本文介紹兩種方式發(fā)送email文件,結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • hadoop 全面解讀自定義分區(qū)

    hadoop 全面解讀自定義分區(qū)

    Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲
    2022-02-02
  • java把字符串轉(zhuǎn)化成公式計算的示例

    java把字符串轉(zhuǎn)化成公式計算的示例

    今天小編就為大家分享一篇java把字符串轉(zhuǎn)化成公式計算的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 簡單工廠模式_動力節(jié)點Java學院整理

    簡單工廠模式_動力節(jié)點Java學院整理

    這篇文章主要介紹了簡單工廠模式的相關(guān)資料,和大家一起學習靜態(tài)工廠方法模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論