1. 程式人生 > >javamail郵件傳送例子

javamail郵件傳送例子


public class EmailTask
{
   
    // Session used by the javamail classes
    private Session session;
   
    // List of messages郵件傳送資訊物件列表
    private List<Message> messages = null;
   
    /**構造方法
     * Creates a new EmailTask.
     */
    public EmailTask()
    {
        //郵件傳送入參Properties,用來設定引數
        Properties mailProps = new Properties();
        //郵件伺服器地址:域名或ip
        String host = "smtpscn.test.com";
        //郵件伺服器埠,預設25
        String port = "25";
        //是否開啟TLS方式傳送,1 是,0 否.預設否
        String startTLS = "0";
        //是否驗證證書,1 是,0 否.預設是
        String cert = "0";
        //是否鑑權true false
        String isAuth = "true";
        //鑑權賬號
        final String account = "zWX161496";
        //鑑權密碼
        final String pwd = "Asd123";
        if (host != null && !"".equals(host))
        {
            mailProps.setProperty("mail.smtp.host", host);
        }
        if (port != null && !"".equals(port))
        {
            mailProps.setProperty("mail.smtp.port", port);
        }
        //如果開始TLS方式
        if ("1".equals(startTLS))
        {
            mailProps.setProperty("mail.smtp.starttls.enable", "true");
            //是否驗證證書
            if ("0".equals(cert))
            {
                mailProps.setProperty("mail.smtp.ssl.trust", "*");
            }
        }
        //是否鑑權:true false
        mailProps.setProperty("mail.smtp.auth", isAuth);
       
        // Create the mail session, check authenticator
        session = Session.getInstance(mailProps, new Authenticator()
        {
            protected PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(account, pwd);
            }
        });
       
        messages = new LinkedList();
    }
   
    /**傳送一批郵件
     * 如果呼叫該方法,將不會通過單獨起一個執行緒的方式來發送郵件
     * 好處是如果傳送失敗可以立即返回結果
     * 缺點是不適合頻率較高的操作
     */
    public void sendMessage()
    {
        try
        {
            Iterator<Message> messageIterator = messages.iterator();
            while (messageIterator.hasNext())
            {
               
                Message message = messageIterator.next();
                Transport.send(message);
            }
        }
        catch (MessagingException me)
        {
            //
        }
        catch (Exception e)
        {
            //
        }
    }
   
   
    /**
     * 構造Message
     * @param toName the name of the recipient of this email.
     * @param toEmail the email address of the recipient of this email.
     * @param fromName the name of the sender of this email.
     * @param fromEmail the email address of the sender of this email.
     * @param subject the subject of the email.
     * @param body the body of the email.
     */
    public void addMessage(String toName, String toEmail, String fromName,
            String fromEmail, String subject, String body)
    {
       
        if (toEmail == null || fromEmail == null || subject == null
                || body == null)
        {
            DebugLogFactory.debug(MailTmplTool.class,
                    "Error sending email in EmailTask.java: Invalid fields.");
        }
        else
        {
            try
            {
                Message message = createMessage();
                Address to = null;
                Address from = null;
                if (toName != null)
                {
                    to = new InternetAddress(toEmail, toName);
                }
                else
                {
                    to = new InternetAddress(toEmail);
                }
                if (fromName != null)
                {
                    from = new InternetAddress(fromEmail, fromName);
                }
                else
                {
                    from = new InternetAddress(fromEmail);
                }
                message.setRecipient(Message.RecipientType.TO, to);
                message.setFrom(from);
                message.setSubject(subject);
                message.setSentDate(new Date());
                message.setHeader("Content-Transfer-Encoding", "BASE64");
                message.setContent(body, "text/html;charset=UTF-8");
                messages.add(message);
            }
            catch (Exception e)
            {
                //
            }
        }
    }
   
    /**
     *
     * @return A new JavaMail message.
     */
    public Message createMessage()
    {
        return new MimeMessage(session);
    }
}

補充:可以使用多執行緒傳送傳送,好處是不影響主執行緒,可以立即返回。

建立一個連結串列LinkedList(可包裝為郵件傳送工廠),用來存放每個郵件任務物件,啟用幾個執行緒如6個,每次發郵件時,將發郵件任務物件新增到LinkedList,注意枷鎖,並通知所有執行緒啟用notifyall;

當LinkedList有元素時,這些執行緒被啟用,同時從LinkedList取出任務,注意加鎖,本別傳送;

當列表為空時,就掛起wait。

相關推薦

javamail郵件傳送例子

public class EmailTask{        // Session used by the javamail classes    private Session session;        // List of messages郵件傳送資訊物件列表    private List<

阿里雲ECS禁用25埠導致JavaMail郵件傳送失敗

專案需要在阿里雲ECS上將每日的簡易彙總資訊通過郵件傳送出來,這裡使用的JavaMail預設的傳送埠是25,而阿里雲出於伺服器安全性考慮偏偏25埠是不開放的,導致郵件伺服器連線超時傳送失敗,報錯如下: MailSendException: Mail server

javaMail郵件傳送

MailAuthenticator.java package com.sunrise.jop.common.mail; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication;

關於javamail郵件傳送地址錯誤和判斷是否傳送成功的問題

使用javamail做傳送郵件功能的一些問題,這裡寫出來給大家分享: 問題1;如何判斷郵件是否傳送成功     使用try catch捕獲傳送郵件程式碼的,如果出現messageException異常,郵件傳送失敗     一下程式碼是我封裝過的複合郵件的傳送功能

javamail 郵件傳送

1.) 是用javamail包; 2) 在發件人郵箱的設定中開啟POP3/SMTP/IMAP import java.util.Properties; import javax.mail.Message; import javax.mail.Session; impor

javamail程式碼例子-java寫的郵件傳送-另一種傳送郵件的方法

package com.cs.mail; import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; import javax.mail.Authen

javamail傳送郵件例子

package com.cs.mail; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; im

Java 基於JavaMail郵件傳送

http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/details/51722660     電子郵件的應用非常廣泛,例如在某網站註冊了

基於JavaMail的簡單郵件傳送

電子郵件的應用非常廣泛,例如在某網站註冊了一個賬戶,自動傳送一封歡迎郵件,通過郵件找回密碼,自動批量傳送活動資訊等。但這些應用不可能和我們自己平時發郵件一樣,先開啟瀏覽器,登入郵箱,建立郵件再發送。本文將簡單介紹如何通過 Java 程式碼來建立電子郵件,並連線郵件伺服器傳送郵件。 1. 電子郵件

JavaMail實踐--實現郵件傳送

一、介紹   1、主要功能:     實現普通郵件的傳送     實現帶有HTML標籤的內容傳送     實現帶有附件的郵件傳送   2、API JavaMail mail.jar 1.4.5 JAF(版本 1.1.1) activation.jar   3、QQ郵箱的認證   

基於JavaMail的Java郵件傳送:複雜郵件傳送

一封複雜的郵件內容可以看做是由很多節點(或者可以說是“片段”/“部分”/“零件”)組成,文字、圖片、附件等都可以看成是郵件內容中的一個節點。這些節點之間又可以相互關聯組合成一個節點。最終組合成一個大節點就是郵件的正文內容。 完整程式碼演示: package com.xiets.ja

使用JavaMail實現郵件傳送

電子郵件協議 電子郵件在網路中傳輸和網頁一樣需要遵從特定的協議,常用的電子郵件協議包括 SMTP,POP3,IMAP。其中郵件的建立和傳送只需要用到 SMTP協議,所以本文也只會涉及到SMTP協議。SMTP 是 Simple Mail Transfer Protocol

JavaMail java郵件開發_在Web應用中增加郵件傳送功能

建立一個web專案 在lib下新增兩個jar包,mail.jar和之前寫的JavaMail02.jar SendMailServlet: package com.yuming.servlet; import java.io.IOException; import javax.se

JavaMail實現郵件傳送功能

最近的專案要使用javamail進行郵件傳送,寫這篇部落格總結下 傳送簡單的郵件 在進行郵件傳送之前要引入javamail的Maven依賴 dependency> <groupId>javamail</groupId> &l

使用JavaMail進行簡單SMTP郵件傳送測試,從網易郵箱傳送到QQ郵箱

===========TLS版本=========== 本文使用的JavaMail版本為1.5.2 import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Messa

基於JavaMail郵件傳送

通過javamail 實現傳送郵件。注意:伺服器有些埠是沒有開放的 需要去開放埠。 有些郵箱是需要開啟對應授權服務的。1.maven依賴:<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api 

JavaWeb中使用JavaMail實現傳送郵件功能例項詳解

現在很多的網站都提供有使用者註冊功能, 通常我們註冊成功之後就會收到一封來自注冊網站的郵件。郵件裡面的內容可能包含了我們的註冊的使用者名稱和密碼以及一個啟用賬戶的超連結等資訊。今天我們也來實現一個這樣的功能,使用者註冊成功之後,就將使用者的註冊資訊以Email的形式傳送到使

基於javaMail郵件傳送--excel作為附件

基於JavaMail的Java郵件傳送 Author [email protected] Desc 簡單郵件傳送 Date 2017/12/8 專案中需要根據物料資質的狀況實時給使用者傳送郵件,然後

Spring boot 整合JavaMail服務傳送郵件

JavaMail是SUN提供給廣大Java開發人員的一款郵件傳送和接受的一款開源類庫,支援常用的郵件協議,如:SMTP、POP3、IMAP,開發人員使用JavaMail編寫郵件程式時,不再需要考慮底層的通訊細節如:Socket而是關注在邏輯層面。JavaMail可以傳送各種

Javamail實現office365進行郵件傳送

我這邊遇到的問題:javax.mail.AuthenticationFailedException: 535 5.7.3 Authentication unsuccessful [BJBPR01CA017.CHNPR01.prod.partner.outlook.cn]。一頓