javaMail 實(shí)現(xiàn)群發(fā)晌杰,多附件

最近閑的沒(méi)事, 寫(xiě)了個(gè)使用javaMail 發(fā)送郵件的小程序

1:新建maven 項(xiàng)目
2:導(dǎo)入jar包依賴(lài)

 <dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.2</version>
</dependency>

3:直接貼代碼實(shí)現(xiàn)發(fā)送郵件了

 import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
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 MailUtils {

    private static String host;
    private static String username;
    private static String password;
    private static String from;
    private static String nick;
    static {
        try {
            // Test Data
            host = "smtp.163.com";
            username = "郵箱賬號(hào)";
            password = "郵箱密碼";
            from = "郵箱賬號(hào)";
            nick = "admin";
            // nick + from 組成郵箱的發(fā)件人信息
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean sendMail(String to, String subject, String body,
            List<String> filePath) throws UnsupportedEncodingException,
            AddressException, MessagingException {
        //
        if (body == null) {
            body = "";
        }
        if (subject == null) {
            subject = "";
        }
        // 創(chuàng)建properties 對(duì)象
        Properties props = System.getProperties();
        // 創(chuàng)建信件服務(wù)器
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", true);// 通過(guò)驗(yàn)證
        // 得到默認(rèn)的對(duì)話對(duì)象
        Session session = Session.getDefaultInstance(props, null);
        // 創(chuàng)建一個(gè)消息, 并初始化該消息的各項(xiàng)元素
        MimeMessage msg = new MimeMessage(session);
        nick = MimeUtility.encodeText(nick);
        msg.setFrom(new InternetAddress(nick + "<" + from + ">"));
        // 創(chuàng)建收件人列表
        if (to != null && to.trim().length() > 0) {
            String[] arr = to.split(",");
            int receiverCount = arr.length;
            if (receiverCount > 0) {
                InternetAddress[] address = new InternetAddress[receiverCount];
                for (int i = 0; i < receiverCount; i++) {
                    address[i] = new InternetAddress(arr[i]);

                }
                msg.addRecipients(Message.RecipientType.TO, address);
                msg.setSubject(subject);
                // 后面的bodypart 將加入到此處創(chuàng)建的multipart 中
                Multipart mp = new MimeMultipart();
                // 附件操作
                if (filePath != null && filePath.size() > 0) {
                    for (String fileName : filePath) {
                        MimeBodyPart mbp = new MimeBodyPart();
                        // 得到數(shù)據(jù)源
                        FileDataSource fds = new FileDataSource(fileName);
                        // 得到附件本身
                        mbp.setDataHandler(new DataHandler(fds));
                        mp.addBodyPart(mbp);
                    }
                    MimeBodyPart mbp = new MimeBodyPart();
                    mbp.setText(body, "UTF-8");
                    mp.addBodyPart(mbp);
                    // 移走集合中的所有元素
                    filePath.clear();
                    msg.setContent(mp);
                } else {
                    msg.setText(body);

                }
                // 設(shè)置郵件頭的發(fā)送信息
                msg.setSentDate(new Date());
                msg.saveChanges();
                // 發(fā)送郵件
                Transport transport = session.getTransport("smtp");
                transport.connect(host, username, password);
                transport.sendMessage(msg,
                        msg.getRecipients(Message.RecipientType.TO));
                transport.close();
                return true;
            } else {
                System.out.println("None receiver!");
                return false;
            }
        } else {
            return false;

        }
    }

    public static void main(String[] args) throws AddressException,
            UnsupportedEncodingException, MessagingException {
        List<String> filepath = new ArrayList<String>();
        filepath.add("F:/51/1.jpg");
        filepath.add("F:/51/2.jpg"); //
        sendMail("接收郵件賬號(hào),接收郵件賬號(hào),接收郵件賬號(hào)",
                "郵箱測(cè)試", "測(cè)試發(fā)送多人全度,多附件", filepath);
    }

}

附:這里使用的是163郵箱, 使用騰訊QQ 郵箱沒(méi)成功斥滤,不是報(bào)530 就是535 的 不知道為何将鸵,我也開(kāi)通了POP3/SMTP服務(wù)
有成功的小伙伴可以給我留個(gè)言,或者直接投稿到我專(zhuān)題頁(yè)OK 佑颇,謝謝顶掉,希望互相學(xué)習(xí),一起進(jìn)步

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挑胸,一起剝皮案震驚了整個(gè)濱河市痒筒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茬贵,老刑警劉巖簿透,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異解藻,居然都是意外死亡老充,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)螟左,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)啡浊,“玉大人,你說(shuō)我怎么就攤上這事胶背〕嫔叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵奄妨,是天一觀的道長(zhǎng)涂籽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)砸抛,這世上最難降的妖魔是什么评雌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮直焙,結(jié)果婚禮上景东,老公的妹妹穿的比我還像新娘。我一直安慰自己奔誓,他們只是感情好斤吐,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布搔涝。 她就那樣靜靜地躺著,像睡著了一般和措。 火紅的嫁衣襯著肌膚如雪庄呈。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天派阱,我揣著相機(jī)與錄音诬留,去河邊找鬼。 笑死贫母,一個(gè)胖子當(dāng)著我的面吹牛文兑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腺劣,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绿贞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了橘原?” 一聲冷哼從身側(cè)響起樟蠕,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎靠柑,沒(méi)想到半個(gè)月后寨辩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歼冰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年靡狞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隔嫡。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甸怕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腮恩,到底是詐尸還是另有隱情梢杭,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布秸滴,位于F島的核電站武契,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏荡含。R本人自食惡果不足惜咒唆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望释液。 院中可真熱鬧全释,春花似錦、人聲如沸误债。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至李命,卻和暖如春登淘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背项戴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留槽惫,地道東北人周叮。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像界斜,于是被迫代替她去往敵國(guó)和親仿耽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本文包括:1各薇、名詞解釋2项贺、郵件收發(fā)過(guò)程3、JavaMail 知識(shí)概要4峭判、發(fā)送一封符合 MIME 協(xié)議的 JavaM...
    廖少少閱讀 4,031評(píng)論 2 13
  • 一林螃、郵件開(kāi)發(fā)涉及到的一些基本概念 郵件服務(wù)器和電子郵箱 郵件傳輸協(xié)議 電子郵件的發(fā)送和接收過(guò)程 1.1郵件服務(wù)器和...
    yjaal閱讀 1,473評(píng)論 0 7
  • Java Mail 簡(jiǎn)介 常見(jiàn)的郵件協(xié)議包括:SMTP(Simple Mail Transfer Protocol...
    Josaber閱讀 3,279評(píng)論 1 9
  • 背景 近期需要實(shí)現(xiàn)一個(gè)郵件客戶端的項(xiàng)目奕删,類(lèi)似Foxmail,outlook客戶端疗认。但項(xiàng)目只做消息轉(zhuǎn)發(fā)完残,不需要完整實(shí)...
    BigBug77閱讀 4,286評(píng)論 0 4
  • 從古代的八百里加急,到現(xiàn)在的電子郵件横漏,郵件的發(fā)展見(jiàn)證了上下五千年的發(fā)展史谨设,這些當(dāng)然是廢話,只是要說(shuō)說(shuō)郵件的重要性缎浇。...
    大牧莫邪閱讀 1,557評(píng)論 0 13