qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java發郵件:Java Mail與Apache Mail

          一、郵件簡介
            一封郵件由很多信息構成,主要的信息如下,其他的暫時不考慮,例如抄送等:
            1、收件人:收件人的郵箱地址,例如xxx@xx.com
            2、收件人姓名:大部分的郵件顯示時都會顯示,例如loadfate 779554589@qq.com
            3、發件人:發件人的郵箱地址
            4、發件人姓名:
            5、主題:郵件的標題
            6、內容及附件:郵件的主要內容
            二、使用Java發郵件的通用步驟
            一般的項目中沒有單獨的郵件服務器,一般情況下都是使用別人的服務器。
            1、設置smtp服務器:不同的郵件服務器有不同的地址,例如:smtp.qq.com表示騰訊的smtp服務器。
            2、授權:使用該服務器的帳號和密碼登錄該服務器。
            3、創建郵件:創建一份包含所有信息的郵件,比如發件人、收件人、內容等。
            4、設置郵件的屬性:為郵件的屬性添加數據。
            5、發送郵件:因為封裝不同,發送的方式不一致。
            三、Java Mail與Apache Mail
            Apache Mail是對Java Mail的封裝,使用起來更加的簡便,邏輯層次感更好。
            使用Java Mail只需要導入一個jar包:mail.jar。
            使用Apache Mail的時候需要導入兩個jar包:mail.jar、commons-email-1.3.1.jar。
            四、使用Java Mail發送郵件
          1 public static void main(String[] args) throws Exception {
          2         final String user = "779554589";
          3         final String password = "";
          4
          5         String fromAddress = "779554589@qq.com";
          6         String toAddress = "loadfate@163.com";
          7         String subject = "郵件測試主題";
          8         String content = "這是一個測試郵件<b>哈哈</b>";
          9
          10         //配置參數
          11         Properties props = new Properties();
          12         props.setProperty("mail.smtp.auth", "true");
          13         props.setProperty("mail.transport.protocol", "smtp");
          14         props.setProperty("mail.host", "smtp.qq.com");
          15         // 方法一:使用transport對象發送郵件
          16         {
          17             //通過參數生成會話
          18             Session session = Session.getInstance(props);
          19             //啟用調試模式
          20             session.setDebug(true);
          21             //創建一封郵件,并設置信息
          22             Message message = new MimeMessage(session);
          23             message.setFrom(new InternetAddress(fromAddress));
          24             message.setSubject(subject);
          25             message.setText(content);
          26             //創建傳輸
          27             Transport transport = session.getTransport();
          28             //連接smtp服務器
          29             transport.connect(user, password);
          30             //發送
          31             transport.sendMessage(message, new InternetAddress[] { new InternetAddress(toAddress) });
          32             transport.close();
          33         }
          34
          35
          36         // 方法二:使用Transport類靜態方法發送郵件
          37         {
          38             //生成Session時以獲取授權連接
          39             Session session = Session.getInstance(props, new Authenticator() {
          40                 @Override
          41                 protected PasswordAuthentication getPasswordAuthentication() {
          42                     return new PasswordAuthentication(user, password);
          43                 }
          44             });
          45             session.setDebug(true);
          46             //創建一封郵件,并設置信息
          47             Message message = new MimeMessage(session);
          48             message.setSubject(subject);
          49             message.setFrom(new InternetAddress(fromAddress));
          50             message.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
          51             message.setContent(content, "text/html;charset=utf-8");
          52
          53             //直接發送,message通過已經授權的Session生成
          54             Transport.send(message);
          55         }
          56     }
            五、使用Apache Mail發送郵件
          1 public class ApacheMailTest {
          2     // smtp服務器
          3     private String hostName = "smtp.qq.com";
          4     // 帳號與密碼
          5     private String userName = "779554589";
          6     private String password = "這是個秘密";
          7     // 發件人
          8     private String fromAddress = "779554589@qq.com";
          9     // 發件人姓名
          10     private String fromName = "loadfate";
          11
          12     public static void main(String[] args) throws Exception {
          13         // 收件人與收件人名字
          14         String toAddress = "loadfate@163.com";
          15         String toName = "loadfate";
          16         ApacheMailTest test = new ApacheMailTest();
          17         // 所有的異常都為處理,方便瀏覽
          18
          19         test.sendSimpleEmail(toAddress, toName);
          20         test.sendHtmlEmail(toAddress, toName);
          21         test.sendMultiPartEmail(toAddress, toName);
          22         System.out.println("發送完成");
          23     }
          24
          25     // 發送簡單郵件,類似一條信息
          26     public void sendSimpleEmail(String toAddress, String toName) throws Exception {
          27         SimpleEmail email = new SimpleEmail();
          28         email.setHostName(hostName);// 設置smtp服務器
          29         email.setAuthentication(userName, password);// 設置授權信息
          30         email.setCharset("utf-8");
          31         email.setFrom(fromAddress, fromName, "utf-8");// 設置發件人信息
          32         email.addTo(toAddress, toName, "utf-8");// 設置收件人信息
          33         email.setSubject("測試主題");// 設置主題
          34         email.setMsg("這是一個簡單的測試!");// 設置郵件內容
          35         email.send();// 發送郵件
          36     }
          37
          38     // 發送Html內容的郵件
          39     public void sendHtmlEmail(String toAddress, String toName) throws Exception {
          40         HtmlEmail email = new HtmlEmail();
          41         email.setHostName(hostName);
          42         email.setAuthentication(userName, password);
          43         email.setCharset("utf-8");
          44         email.addTo(toAddress, toName, "utf-8");
          45         email.setFrom(fromAddress, fromName, "utf-8");
          46         email.setSubject("這是一個html郵件");
          47         // 設置html內容,實際使用時可以從文本讀入寫好的html代碼
          48         email.setHtmlMsg("<div style='width:100px;height:200px;'>a</div>");
          49         email.send();
          50
          51     }
          52
          53     // 發送復雜的郵件,包含附件等
          54     public void sendMultiPartEmail(String toAddress, String toName) throws Exception {
          55         MultiPartEmail email = null;
          56         email = new MultiPartEmail();
          57         email.setHostName(hostName);
          58         email.setAuthentication(userName, password);
          59         email.setCharset("utf-8");
          60         email.addTo(toAddress, toName, "utf-8");
          61         email.setFrom(fromAddress, fromName, "utf-8");
          62         email.setSubject("這是有附件的郵件");
          63         email.setMsg("<a href='#'>測試內容</a>");
          64
          65         // 為郵件添加附加內容
          66         EmailAttachment attachment = new EmailAttachment();
          67         attachment.setPath("D:\\郵件.txt");// 本地文件
          68         // attachment.setURL(new URL("http://xxx/a.gif"));//遠程文件
          69         attachment.setDisposition(EmailAttachment.ATTACHMENT);
          70         attachment.setDescription("描述信息");
          71         // 設置附件顯示名字,必須要編碼,不然中文會亂碼
          72         attachment.setName(MimeUtility.encodeText("郵件.txt"));
          73         // 將附件添加到郵件中
          74         email.attach(attachment);
          75         email.send();
          76     }
          77 }
            六、附件
            下載地址:http://pan.baidu.com/s/1qW8rcAw
            如果失效請聯系LZ
            文件說明:
            1、maildemo.zip :maildemo的源代碼
            2、mail.jar :Java Mail的jar包
            3、commons-email-1.3.1.jar :Apache Mail的jar包

          posted on 2014-06-11 11:19 順其自然EVO 閱讀(1008) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河南省| 雷波县| 临汾市| 德惠市| 万荣县| 天长市| 长顺县| 无极县| 壤塘县| 毕节市| 梓潼县| 松江区| 凌源市| 金湖县| 古交市| 桦南县| 靖宇县| 玛多县| 泸州市| 浦城县| 临城县| 庆城县| 灌阳县| 明光市| 太白县| 古丈县| 长岭县| 柳州市| 嘉兴市| 博罗县| 苍南县| 姚安县| 高邮市| 蕉岭县| 蒲城县| 子长县| 张家口市| 大田县| 南阳市| 竹山县| 东安县|