一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java中javamail發(fā)送帶附件的郵件實現方法

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

2019-12-07 16:20shichen2014 JAVA教程

這篇文章主要介紹了java中javamail發(fā)送帶附件的郵件實現方法,較為詳細的分析了JavaMail發(fā)送郵件的用法,是非常實用的技巧,需要的朋友可以參考下

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

JavaMail,顧名思義,提供給開發(fā)者處理電子郵件相關的編程接口。它是Sun發(fā)布的用來處理email的API。它可以方便地執(zhí)行一些常用的郵件傳輸,JavaMail是可選包,因此如果需要使用的話你需要首先從java官網上下載。目前最新版本是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服務器、用戶名、密碼、主題、內容等  
    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(); //用于保存發(fā)送附件的文件名的集合
     
    /** 
     * 設置SMTP服務器地址 
     */  
    public void setSmtpServer(String smtpServer){  
        this.smtpServer=smtpServer;  
    }  
     
    /** 
     * 設置發(fā)件人的地址 
     */  
    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服務器地址、發(fā)送者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服務器地址、發(fā)送者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;  
    }  
  
    /** 
     * 發(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){ //服務器需要身份認證  
            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());     //設置信件頭的發(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ā)送失敗!錯誤原因:\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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品99久久免费观看 | 特级老女人淫片高清视频 | 青草视频在线观看视频 | 亚洲国产日韩欧美一区二区三区 | 丰腴尤物贵妇浪荡小说 | 国产精品性视频免费播放 | 久久综合久综合久久鬼色 | 色网在线观看 | 99re精品在线| 国产九九视频在线观看 | 2019国内自拍| 18hdxxxx中国 | 91专区 | 国产伦精品一区二区三区免费迷 | 国产成人亚洲精品91专区手机 | 欧美日韩一区二区三区在线视频 | 国产成人手机在线 | 国产综合第一页 | 99rv精品视频在线播放 | 亚洲精品午夜视频 | 免费看美女被靠到爽 | 欧美日韩综合网在线观看 | 小柔的性放荡羞辱日记动漫 | 国产成人a∨麻豆精品 | 久久精品热99看 | 四虎最新免费网址 | 精品一区二区三区在线播放 | 千金肉奴隶在线观看 | 男男视频18免费网站 | 亚洲精品丝袜在线一区波多野结衣 | 趴好撅高打屁股sp调教h | 四虎在线精品观看免费 | 久久成人永久免费播放 | 久久久久久久国产精品视频 | 三星w999 | 8天堂资源在线官网 | 亚洲国产第一区二区香蕉日日 | 精品一区二区三区在线视频观看 | 不卡一区二区三区 | 亚洲精品老司机福利在线播放 | 日本五级床片全都免费播放 |