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

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产视频久久久 | 国产男技师 | wankz视频| 免费观看俄罗斯特黄特色 | 亚洲人影院 | 国产精视频 | 国产另类视频一区二区三区 | 国产成人综合视频 | 国产一区风间由美在线观看 | 高中生放荡日记高h娜娜 | 国产美女在线一区二区三区 | 99热线| 久久99亚洲AV无码四区碰碰 | 国内精品 大秀视频 日韩精品 | 四虎精品成人免费观看 | 99日影院在线播放 | 欧美一级欧美一级高清 | 5g影院天天影院天天爽影院网站 | 男同激情视频 | 热色综合 | free哆拍拍免费永久视频 | 91大片淫黄大片在线天堂 | 2019午夜福合集高清完整版 | 亚洲天堂色视频 | 亚洲天堂精品在线 | 大胸被c出奶水嗷嗷叫 | 日韩免费视频一区 | 女上男下gifxxoo动态视频 | 俄罗斯男男激情1069gay | 2048论坛永久入口 原创合集 | 欧美丝袜foot job | www.羞羞答答 | 午夜精品久久久久久 | 91传媒制片厂制作传媒破解版 | 羞羞视频污 | 日本中文字幕一区二区有码在线 | 日韩一区二区三区免费 | 亚洲精品福利一区二区在线观看 | 日韩色在线观看 | 日噜噜 | 欧美一区精品二区三区 |