java郵件發送 qq與163郵箱互發和qq和163郵箱發送其他郵箱實例

高洛峰
發布: 2016-10-29 13:48:17
原創
2402 人瀏覽過

1.首先要向你的專案裡導入1個jar包:mail-1.4.4.jar即可(實現qq和163郵箱發送其他郵箱(此案例只演示一種))

2.代碼如下所顯示

public class TestDemo1 {
    static String SSL_EMAIL = "javax.net.ssl.SSLSocketFactory";

   //需要传的值都在main方法调用的sendmail里传!
    public static void main(String[] args) {
         String s = sendmail(username, pass, from, to, subject, content);
         System.out.println(s);
    }
    /**
     * 
     * @param username 发件人邮件的用户名
     * @param pass 发件人邮件的密码(此密码一定要是授权码   授权码:在发件人邮箱内开启smtp/pop3协议所获得的授权码)
     * @param from 发件人邮箱
     * @param to   收件人邮箱
     * @param subject 邮件标题
     * @param content 邮件内容
     * @return
     */
    public static String sendmail(final String username, final String pass,
            String from, String to, String subject, String content) {
        //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        //设置系统参数
        Properties props = System.getProperties();
        props.setProperty("mail.smtp.socketFactory.class", SSL_EMAIL);
        props.setProperty("mail.smtp.socketFactory.fallback", "true");
        props.setProperty("mail.store.protocol", "smtp");
        props.setProperty("mail.smtp.host", "smtp.qq.com");
        //props.setProperty("mail.smtp.port", "465");
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.auth", "true");
        //创建邮件会话
        Session session = Session.getInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, pass);
            }
        });
        //创建邮件信息
        Message msg = new MimeMessage(session);
        try {
            msg.setFrom(new InternetAddress(username));
            msg.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to, false));
            msg.setSubject(subject);
            msg.setText(content);
            msg.setSentDate(new Date());
            Transport.send(msg);
            return "1";
        } catch (MessagingException e) {
            return e.getMessage();
        }
    }
}
登入後複製

3.發送郵件切記的有一下幾點:

  (1)發送郵件方一定要開通smtp/pop3協定!

  (2)發送郵件方一定要用開通後的授權碼當做密碼來設定!

  (3)當改變發送方的郵件類型時(比如說一開始你用的XXX@qq.com,要換成XXX@163.com)一定要換mail.smtp.host

   smtp.host

    smtp.host .qq.com,163的是smtp.163.com

🎜  (4)下面是常見的錯誤類型:最常見的為 550 DT:SPM  和535(535為你的發送郵件方資訊填寫錯了,可能是授權碼過期,也可能是使用者名稱寫錯了)🎜

  •421 HL:REP 此IP發送行為異常,存在接收者大量不存在情況,被暫時禁止連線。請檢查是否有使用者發送病毒或垃圾郵件,並核對發送清單有效性;
  •421 HL:ICC 該IP同時並發連線數過大,超過了網易的限制,被暫時禁止連線。請檢查是否有用戶發送病毒或垃圾郵件,並降低IP並發連接數量;
  •421 HL:IFC 該IP短期內發送了大量信件,超過了網易的限制,被臨時禁止連接。請檢查是否有使用者發送病毒或垃圾郵件,並降低發送頻率;
  •421 HL:MEP 此IP發送行為異常,存在大量偽造發送域域名行為,被暫時禁止連接。請檢查是否有使用者發送病毒或垃圾郵件,並使用真實有效的網域發送;
  •450 MI:CEL 發送者出現過多的錯誤指令。請檢查寄信程式;
  •450 MI:DMC 目前連線發送的郵件數量超出限制。請減少每次連線中投遞的郵件數量;
  •450 MI:CCL 發送方發送超出正常的指令數量。請檢查寄信程式;
  •450 RP:DRC 目前連線發送的收件人數量超出限制。請控制每次連線投遞的郵件數量;
  •450 RP:CCL 發送方發送超出正常的指令數量。請檢查發信程序;
  •450 DT:RBL 發信IP位於一個或多個RBL裡。請參考http://www.rbls.org/關於RBL的相關資訊;
  •450 WM:BLI 該IP不在網易允許的發送位址清單裡;
  •450 WM:BLU 此用戶不在網易允許的發信用戶清單裡;
  •451 DT:SPM ,please try again 郵件正文帶有垃圾郵件特徵或發送環境缺乏規範性,被臨時拒收。請保持郵件佇列,兩分鐘後重投郵件。需調整郵件內容或最佳化發送環境;
  •451 Requested mail action not taken: too much fail authentication 登入失敗次數過多,被暫時禁止登入。請檢查密碼與帳號驗證設定;
  •451 RP:CEL 發送方出現過多的錯誤指令。請檢查寄信程式;
  •451 MI:DMC 目前連線發送的郵件數量超出限制。請控制每次連線中投遞的郵件數量;
  •451 MI:SFQ 發信人在15分鐘內的發信數量超過限制,請控制發信頻率;
  •451 RP:QRC 發信方短期內累計的收件人數量超過限制,該寄件者暫時禁止寄信。請降低該用戶發信頻率;
  •451 Requested action aborted: local error in processing 系統暫時出現故障,請稍後再嘗試發送;
  •500 Error: bad syntaxU 傳送的sm〔44777776667776 -Ftp> 指令有誤; :NHD HELO命令不允許為空;
  •550 MI:IMF 發信人電子郵件地址不合規範。請參考http://www.rfc-editor.org/關於電子郵件規範的定義;
  •550 MI:SPF 發信IP未被發送域的SPF許可。請參考http://www.openspf.org/關於SPF規範的定義;
  •550 MI:DMA 該郵件未寄信域的DMARC授權。請參考http://dmarc.org/關於DMARC規範的定義;
  •550 MI:STC 寄件者當天的連線數量超出了限定數量,當天不再接受該寄件者的郵件。請控制連線次數;
  •550 RP:FRL 網易郵箱不開放匿名轉發(Open relay);
  •550 RP:RCL 群發收件人數量超過了限額,請減少每封郵件的收件人數量;
• 550 RP:TRC 寄件者當天內累積的收件者數量超過限制,當天不再接受該寄件者的郵件。請降低該用戶發信頻率;
  •550 DT:SPM 郵件正文帶有很多垃圾郵件特徵或發送環境缺乏規範性。需調整郵件內容或最佳化發送環境;
  •550 User in blacklist 此使用者不被允許給網易使用者發信;
  •550 User 此使用者不被允許給網易使用者發信;
  •550 User 此使用者不被允許給網易使用者發信;
  •550 User 此使用者不被允許給網易使用者發送訊號; ;
  •550 Requested mail action not taken: too much recipient  群發數量超過了限額;
  •552 Illegal Attachment 不允許發送該類型的附件,包括以.uu .pifif .scr .m .bat .com .vbe .vb .js .wsh等結尾的附件;
  •552 Requested mail action aborted: exceeded mailsize limit 發送的信件大小超過了網易郵箱允許接收的最大限制;
〳ed •5535action: 3535555353 月 not not fFalaction > NULL sender is not allowed 不允許發件人為空,請使用真實發件人發送;
  •553 Requested action not taken: Local user only  SMTP類型的機器只允許發信人是本站用戶;
 〟 53 Requested• 53' taken: no smtp MX only  MX類型的機器不允許發信人是本站使用者;
  •553 authentication is required  SMTP需要身份驗證,請檢查客戶端設定;
  •554 DT:SPM 發送的郵件內容包含了未被許可的訊息,或被系統識別為垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件;
  •554 DT:SUM 信封發件人和信頭髮件人不匹配;
  •554 IP is rejected, smtp auth error limit exceed 該IP驗證失敗次數過多,被臨時禁止連線。請檢查驗證訊息設定;
  •554 HL:IHU 發信IP因發送垃圾郵件或存在異常的連線行為,被暫時掛起。請偵測寄信IP在歷史上的寄信狀況及寄信程式是否有異常;
  •554 HL:IPB 此IP不在網易允許的寄送位址清單裡;
  •554 MI:STC 寄件者當天內累計郵件數量超過限制,當天不再接受該寄件者的投信。請降低發信頻率;
  •554 MI:SPB 此用戶不在網易允許的發信用戶清單裡;
  •554 IP in blacklist 此IP不在網易允許的發送位址清單裡。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!