婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > struts2集成javamail發郵件示例詳解

struts2集成javamail發郵件示例詳解

熱門標簽:商洛電銷 電銷機器人好賣么 杭州語音電銷機器人軟件 高德地圖標注樣式 地圖標注線上教程 杭州ai語音電銷機器人功能 北票市地圖標注 四川保險智能外呼系統商家 電銷機器人是有一些什么技術

一、代碼預覽
這兩天在做struts2上的郵件發送。以前的項目有用到spring,用spring提供的郵件支持類很方便可以完成這個功能,但是現在只用struts2的話,就碰到了一系列的問題。

請先將自己下載的 mail.jar,及activation.jar加入到classpath

復制代碼 代碼如下:

package com.nerve.cloudoffice.common.util;

import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class EMailSender {
     /**
     * 向用戶發送郵件
     */
    private static final long serialVersionUID = 1L;

    private MimeMessage mimeMsg; // MIME郵件對象

    private Session session; // 郵件會話對象

    private Properties props; // 系統屬性

    private boolean needAuth = false; // smtp是否需要認證

    private String username = ""; // smtp認證用戶名和密碼

    private String password = "";

    private Multipart mp; // Multipart對象,郵件內容,標題,附件等內容均添加到其中后再生成

    private String log;

    public EMailSender() {

    }

    public EMailSender(String smtp) {
        setSmtpHost(smtp);
        createMimeMessage();
    }

    public void setSmtpHost(String hostName) {
        System.out.println("設置系統屬性:mail.smtp.host = " + hostName);
        if (props == null)
            props = System.getProperties(); // 獲得系統屬性對象
        props.put("mail.smtp.host", hostName); // 設置SMTP主機
        props.put("mail.smtp.localhost", "localHostAdress");
    }

    public boolean createMimeMessage() {
        try {
            System.out.println("準備獲取郵件會話對象!");
            session = Session.getDefaultInstance(props, null); // 獲得郵件會話對象
        } catch (Exception e) {
            log = "獲取郵件會話對象時發生錯誤!" + e.toString();
            System.err.println(log);
            return false;
        }
        try {
            mimeMsg = new MimeMessage(session); // 創建MIME郵件對象
            mp = new MimeMultipart(); // mp 一個multipart對象
            // Multipart is a container that holds multiple body parts.
            return true;
        } catch (Exception e) {
            log = "創建MIME郵件對象失敗!" + e;
            System.err.println(log);
            return false;
        }
    }

    public void setNeedAuth(boolean need) {
        System.out.println("設置smtp身份認證:mail.smtp.auth = " + need);
        if (props == null)
            props = System.getProperties();
        if (need) {
            props.put("mail.smtp.auth", "true");
        } else {
            props.put("mail.smtp.auth", "false");
        }
    }

    public void setNamePass(String name, String pass) {
        System.out.println("程序得到用戶名與密碼");
        username = name;
        password = pass;
    }

    public boolean setSubject(String mailSubject) {
        System.out.println("設置郵件主題!");
        try {
            mimeMsg.setSubject(MimeUtility.encodeText(mailSubject,"utf-8","B"));
            return true;
        } catch (Exception e) {
            log = "設置郵件主題發生錯誤!"+e;
            System.err.println(log);
            return false;
        }
    }

    public boolean setBody(String mailBody) {
        try {
            System.out.println("設置郵件體格式");
            BodyPart bp = new MimeBodyPart();
            // 轉換成中文格式
            bp.setContent(
                    "meta http-equiv=Content-Type content=text/html; charset=utf-8>"
                            + mailBody, "text/html;charset=utf-8");
            mp.addBodyPart(bp);
            return true;
        } catch (Exception e) {
            log = "設置郵件正文時發生錯誤!" + e;
            System.err.println(log);
            return false;
        }
    }

    public boolean setFiles(ListString> files){
        try{
            for(String s:files){
                MimeBodyPart mbp=new MimeBodyPart(); 
                FileDataSource fds=new FileDataSource(s); //得到數據源 
                mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart 
                mbp.setFileName(fds.getName());  //得到文件名同樣至入BodyPart 
                mp.addBodyPart(mbp);
            }
            return true;
        }catch(Exception e){
            log = "增加附件時出錯:"+e;
            e.printStackTrace();
            return false;
        }
    }

    public boolean addFile(String path, String name){
        try{
            MimeBodyPart mbp=new MimeBodyPart(); 
            FileDataSource fds=new FileDataSource(path); //得到數據源 
            mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart 
            mbp.setFileName(MimeUtility.encodeText(name,"utf-8","B"));
            mp.addBodyPart(mbp);
            return true;
        }catch(Exception e){
            log = "增加附件時出錯:"+e;
            e.printStackTrace();
            return false;
        }
    }

    public boolean setFrom(String from) {
        System.out.println("設置發信人!");
        try {
            mimeMsg.setFrom(new InternetAddress(from)); // 設置發信人
            return true;
        } catch (Exception e) {
            log = "設置發信人出錯:"+e;
            return false;
        }
    }

    public boolean setTo(String to) {
        System.out.println("設置收信人");
        if (to == null)
            return false;
        try {
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
                    .parse(to));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public boolean setCopyTo(String copyto) {
        if (copyto == null)
            return false;
        try {
            mimeMsg.setRecipients(Message.RecipientType.CC,
                    (Address[]) InternetAddress.parse(copyto));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public boolean sendout() {
        try {
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println("正在發送郵件....");
            Session mailSession = Session.getInstance(props, null);
            Transport transport = mailSession.getTransport("smtp");
            transport.connect((String) props.get("mail.smtp.host"), username,
                    password);
            transport.sendMessage(mimeMsg, mimeMsg
                    .getRecipients(Message.RecipientType.TO));
            // transport.send(mimeMsg);
            System.out.println("發送郵件成功!");
            transport.close();
            return true;
        } catch (Exception e) {
            log = "郵件發送失敗!" + e;
            System.err.println(log);
            return false;
        }
    }

    public String getLog(){
        return log;
    }
}

二、問題總結

2.1  本地執行時報錯

我用的是javaee 5,jdk1.6,在本地跑時,會出現ClassNotFound的Exception,但是這些類在mail.jar里面又是有的。這個原因是因為我們自己增加的jar包里面的類跟javaee5里面的沖突了,我推薦的解決方法是將javaee5里面的 activation包跟mail包刪除。

做法如下:

找到eclipse引用的javaee5包,用rar軟件打開,找到activation跟mail包,刪除保存就可以了。(記得在ide中刷新一下引用包)

2.2 javax.mail.MessagingException: 501 Syntax: HELO hostname

在本地測試通過后,我部署到linux服務器中,但是去碰到了javax.mail.MessagingException: 501 Syntax: HELO hostname異常, google了發現是以下原因:

Javamail 在提取本地 hostname 的時候會 dig 改 hostname ,然后以改 ip 發送郵件。

由于 hostname 對應的 ip 地址, linux 無法解析(如果是 windows 則無這個問題, windows 利用 netbios 協議去獲得該主機的 ip 地址)到本機 hostname 的 ip ,導致 javamail 無法調用發送 ip 。 Postfix 收到此類郵件將拒絕投遞,而產生 501 錯誤。

網上說可以通過修改服務器的hosts文件解決,但是我發現還可以直接在代碼里面解決(只需要加一行代碼,這大大方便啊),即在setSmtpHost()方法中,增加下面一行:

復制代碼 代碼如下:

props.put("mail.smtp.localhost", "localHostAdress");

2.3 附件中文名亂碼
如果附件有中文名,直接setName()會亂碼,通過下面的方法可以解決:

復制代碼 代碼如下:

mbp.setFileName(MimeUtility.encodeText(name,"utf-8","B"));

您可能感興趣的文章:
  • java中javamail發送帶附件的郵件實現方法
  • Java基于JavaMail實現向QQ郵箱發送郵件
  • JavaWeb中使用JavaMail實現發送郵件功能實例詳解
  • java中javamail收發郵件實現方法
  • Java程序中使用JavaMail發送帶圖片和附件的郵件
  • Java使用JavaMail API發送和接收郵件的代碼示例
  • JavaMail實現發送超文本(html)格式郵件的方法
  • 基于SSM框架+Javamail發送郵件的代碼實例
  • JavaMail實現郵件發送的方法
  • 郵件的組織結構介紹 郵件實現詳解(三)

標簽:青島 貴州 云浮 西藏 宿州 江西 紅河 丹東

巨人網絡通訊聲明:本文標題《struts2集成javamail發郵件示例詳解》,本文關鍵詞  struts2,集成,javamail,發,郵件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《struts2集成javamail發郵件示例詳解》相關的同類信息!
  • 本頁收集關于struts2集成javamail發郵件示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人午夜短视频| www.亚洲激情.com| 日韩欧美国产精品一区| a在线欧美一区| 国产不卡视频在线播放| 日本不卡一区二区三区| 亚洲特级片在线| 欧美二区在线观看| 成人高清视频在线| 日韩av二区在线播放| 久久男人中文字幕资源站| 91精彩视频在线| 九色综合狠狠综合久久| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 天天av天天翘天天综合网| 中文字幕综合网| 亚洲国产视频在线| 美女被吸乳得到大胸91| 激情成人午夜视频| 亚洲一区二区偷拍精品| 天天亚洲美女在线视频| 午夜精品福利在线| 亚洲精品福利视频网站| 亚洲一区二区av在线| 免费成人在线观看| 成人在线视频一区| 制服.丝袜.亚洲.中文.综合| 2020国产成人综合网| 亚洲欧美日韩一区| 久久不见久久见免费视频7| 成人久久久精品乱码一区二区三区| 午夜精品一区二区三区免费视频 | 亚洲最快最全在线视频| 精品三级在线观看| 中文字幕一区二区视频| 免费成人在线观看| 欧美浪妇xxxx高跟鞋交| 国产精品乱人伦中文| 国产一区二区不卡| 欧美成人a∨高清免费观看| 亚洲一区二三区| 91精品国产综合久久香蕉麻豆| 成人手机在线视频| 欧美mv日韩mv国产网站| 欧美a一区二区| 91麻豆精品国产| 喷白浆一区二区| 日韩精品专区在线影院重磅| 天天做天天摸天天爽国产一区| 欧美中文一区二区三区| 亚洲国产日产av| 欧美一区二区三区人| 久久av中文字幕片| 久久久影视传媒| 99精品偷自拍| 日韩精品欧美成人高清一区二区| 6080国产精品一区二区| 国内精品国产三级国产a久久| 久久综合狠狠综合久久综合88 | 亚洲成av人片一区二区三区| 欧洲精品视频在线观看| 日韩国产高清影视| 久久麻豆一区二区| 色欧美片视频在线观看在线视频| 亚洲免费三区一区二区| 欧美日韩国产欧美日美国产精品| 免费国产亚洲视频| 亚洲欧美日韩国产综合在线| 欧美色视频在线观看| 国产精品99久久久久| 三级久久三级久久久| 国产精品久久久久精k8| 欧美电视剧在线看免费| 99re热视频精品| 国产盗摄精品一区二区三区在线| 夜夜嗨av一区二区三区| 国产日产欧美精品一区二区三区| 欧美亚洲愉拍一区二区| 高清视频一区二区| 国产一区二区福利| 亚洲国产综合91精品麻豆| 国产精品欧美久久久久一区二区| 国产在线精品免费av| www国产精品av| 8v天堂国产在线一区二区| av不卡在线播放| 国产成人综合自拍| 国产精品资源在线看| 久久精品国产澳门| 六月丁香婷婷色狠狠久久| 免费看日韩a级影片| 狠狠色狠狠色综合| 久久国产剧场电影| 精品一区二区三区免费| 精品系列免费在线观看| 欧美a级一区二区| 国产美女精品在线| 国产成人免费在线视频| www.久久精品| 欧美日韩二区三区| 欧美久久一二区| 久久久精品免费观看| 91美女在线观看| 日韩欧美国产午夜精品| 久久毛片高清国产| 一区二区在线免费观看| 男男gaygay亚洲| 国产一区二区毛片| 成人aa视频在线观看| 色综合久久综合网欧美综合网| 欧美性猛片aaaaaaa做受| 久久精品国产第一区二区三区| 国产一区二区按摩在线观看| 日本黄色一区二区| 欧美一级搡bbbb搡bbbb| 中文字幕不卡在线观看| 亚洲成av人综合在线观看| 亚洲综合区在线| 成人性生交大片免费| 欧美日韩国产一级二级| 亚洲手机成人高清视频| 国产99久久久国产精品潘金网站| 欧美日韩国产一区| 亚洲精品乱码久久久久久久久| 亚洲一区自拍偷拍| 99re热视频这里只精品 | zzijzzij亚洲日本少妇熟睡| 欧美一级黄色录像| 亚洲成a人在线观看| 色综合天天在线| 国产免费久久精品| 久久国产人妖系列| 久久综合av免费| 精品国产乱子伦一区| 免费观看在线色综合| 色综合久久久久综合体| 国产精品成人免费| 一本到不卡精品视频在线观看 | 91在线小视频| 国产一区二区三区在线观看免费| 成人av片在线观看| 亚洲欧洲成人精品av97| 91成人免费在线视频| 亚洲国产精品一区二区尤物区| www.在线欧美| 亚洲成人av中文| 精品欧美一区二区三区精品久久| 亚洲成a人v欧美综合天堂下载| 欧美老肥妇做.爰bbww视频| 成人欧美一区二区三区黑人麻豆| 91国偷自产一区二区开放时间 | 国产精品国产三级国产| 日本精品免费观看高清观看| 美国一区二区三区在线播放| 亚洲国产精品t66y| 欧美精品久久99| 91尤物视频在线观看| 久久99精品久久久久久国产越南 | 日韩精品中文字幕在线一区| 9久草视频在线视频精品| 美女视频一区在线观看| 一区二区三区波多野结衣在线观看| 色综合网站在线| 久久成人免费网| 精品美女被调教视频大全网站| 国产福利不卡视频| 男女视频一区二区| 理论片日本一区| 麻豆成人久久精品二区三区红| 亚洲午夜影视影院在线观看| 亚洲色图另类专区| 中文字幕字幕中文在线中不卡视频| 国产蜜臀av在线一区二区三区| 国产日产欧美一区| 亚洲摸摸操操av| 日日夜夜一区二区| 久久电影网站中文字幕| 国产精品亚洲综合一区在线观看| 久草精品在线观看| 91在线一区二区三区| 欧美日韩亚州综合| 国产日产欧美一区| 国产精品久99| 五月天激情小说综合| 美女精品自拍一二三四| 粉嫩绯色av一区二区在线观看| 色成年激情久久综合| 欧美一区二区三区播放老司机| 欧美精品一区二区蜜臀亚洲| 国产拍揄自揄精品视频麻豆 | 国产欧美日韩在线观看| 精品国产伦一区二区三区免费| 欧美日韩不卡在线| 国产精品入口麻豆原神| 亚洲午夜羞羞片| 不卡一二三区首页| av一区二区不卡| 日韩欧美卡一卡二| 亚洲第一精品在线| av电影在线观看一区|