程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java郵件發送 qq與163郵箱互發和qq和163郵箱發送其他郵箱實例,java郵件發送

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

編輯:JAVA綜合教程

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


研究了近一天的時間,通過查閱相關資料,終於對java發送郵件的機制,原理有了一點點的理解,希望能夠幫到大家!

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)當改變發送方的郵件類型時(比如說一開始你用的[email protected],要換成[email protected])一定要換mail.smtp.host

      qq的是smtp.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 發送的smtp命令語法有誤;
  •550 MI: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 Invalid User 請求的用戶不存在;
  •550 User in blacklist 該用戶不被允許給網易用戶發信;
  •550 User suspended 請求的用戶處於禁用或者凍結狀態;
  •550 Requested mail action not taken: too much recipient  群發數量超過了限額;
  •552 Illegal Attachment 不允許發送該類型的附件,包括以.uu .pif .scr .mim .hqx .bhx .cmd .vbs .bat .com .vbe .vb .js .wsh等結尾的附件;
  •552 Requested mail action aborted: exceeded mailsize limit 發送的信件大小超過了網易郵箱允許接收的最大限制;
  •553 Requested action not taken: NULL sender is not allowed 不允許發件人為空,請使用真實發件人發送;
  •553 Requested action not taken: Local user only  SMTP類型的機器只允許發信人是本站用戶;
  •553 Requested action not 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不在網易允許的發送地址列表裡。

    如果有想群發,添加附件,郵件內容可以用html標簽寫內容的,請查看我的博客

    此次發表的博客,有自己想法,也有向其他前輩的借鑒,有錯的地方大家多多留言提點,我會繼續做的更好!

      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved