1. 程式人生 > >郵件:事務失敗。 伺服器響應為:DT:SPM 163 smtp

郵件:事務失敗。 伺服器響應為:DT:SPM 163 smtp

幾年前我做的一個專案,日發郵件最高峰時幾十萬。自以為對郵件傳送方面已經有了一定認識,所以近期機緣巧合之下,又有專案需要傳送郵件,不禁自信滿滿,暗自慶幸能不手到擒來乎?

不想老革命遇到新問題。我原先的郵件傳送機制,是生成eml檔案,然後扔到windows自帶的smtp伺服器的pickup目錄下,系統即自動傳送(見拙作:郵件傳送一點心得)。

但今時今日,這些好像都是老皇曆了。IIS7預設並沒有SMTP,如果作業系統是server,還可以通過新增功能加上去,但WIN7就不行了。偏偏,我們的系統就部署在WIN7下。

我第一個應對之道是看WIN7能不能裝那個自帶的SMTP,結果是不行,死活沒找到。

第二個辦法是裝個第三方的SMTP,找來找去,找到一個叫做什麼FREE SMTP的,裝上去以後,開啟看,好像忒簡單了點。根本沒有啥PICK目錄的,應該是隻能通過程式碼,搞什麼幾次握手之類的方法來進行呼叫。我很煩這個東西。

最後,決定還是直接使用smtp.163.com。網上例子比比皆是。

public interface IEmail
{
    bool Send(EmailParam param);
    string Mess { get; }
}
public class EmailParam
{
    public string From { get; set; }
    public
string To { get; set; }//接收人;多個郵箱用分號隔開 public string CC { get; set; }//抄送;多個郵箱用分號隔開 public string Subject { get; set; }//標題 public string Body { get; set; }//郵件正文 } public class Sender : IEmail { SmtpClient client; public Sender() { // <add key="eml_host" value="smtp.163.com"/>
// <add key="eml_account" value="chendaqu"/> // <add key="eml_pwd" value="1234abcd"/> string host = ConfigurationManager.AppSettings["eml_host"]; string account = ConfigurationManager.AppSettings["eml_account"]; string pwd = ConfigurationManager.AppSettings["eml_pwd"]; client = new SmtpClient(); client.Host = host; client.UseDefaultCredentials = false; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Credentials = new System.Net.NetworkCredential(account,pwd); client.Port = 25; } public string Mess { get; set; } public bool Send(EmailParam param) { MailMessage mail = new MailMessage(); mail.From = new MailAddress(param.From); getCollection(mail.To,param.To); getCollection(mail.CC, param.CC); mail.Subject = param.Subject; mail.Body = param.Body; mail.SubjectEncoding = Encoding.UTF8; mail.BodyEncoding = Encoding.UTF8; mail.Priority = MailPriority.Normal; mail.IsBodyHtml = true; mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; try { client.Send(mail); } catch(Exception ex) { Mess = ex.Message; return false; } return true; } MailAddressCollection getCollection(MailAddressCollection collection,string arstring) { if (!String.IsNullOrEmpty(arstring)) { string[] ar = arstring.Split(';'); foreach (string item in ar) { if (String.IsNullOrEmpty(item)) continue; collection.Add(item); } } return collection; } }

使用單元測試進行呼叫:

[TestMethod()]
public void SendTest()
{
    IEmail sender = new Sender();

    bool ok = sender.Send(new EmailParam()
    {
        Subject = "郵件測試7",
        Body = "Hello World!",
        From = "[email protected]",
        To = "[email protected];[email protected]",
    });

    Assert.AreEqual(true, ok);
}

結果剛開始非常順利,都能收到郵件;但該單元測試運行了幾次以後,就傳送失敗了。提示:

錯誤:郵件:事務失敗。 伺服器響應為:DT:SPM 163 smtp11,D8CowACXNqusR1pYQe3vGA--.16469S2 1482311598,please see http://mail.163.com/help/help_spam_16.htm?ip=219.136.75.223&hostid=smtp11&time=1482311598

開始時以為是因為163郵箱的反垃圾郵件機制,猛查資料,結果一無所獲。焦慮攻心之下,我第二天居然感冒了。後來才知道是QQ郵箱的發垃圾郵件機制所致。同一個傳送請求中,有一個地址失敗,其他的都失敗了,所以稱為“事務”?

後來就是莫名其妙地好了,可能是郵件內容有所變化,QQ又認為它不是垃圾了。靠。

注:
我這個163郵箱,開啟了客戶端授權,未清楚對應對反垃圾機制是否有用,好像不開啟這個客戶端授權也能傳送。開啟了這個客戶端授權後,程式碼中的密碼要使用這個客戶端授權密碼,而不是登入郵箱的密碼。
這裡寫圖片描述

==================================
以上就是垃圾。這個問題等於沒解決。163的SMTP一言不合就將你的郵件當成垃圾郵件,直到第二天才解封。但是很奇怪,採用foxmail作為客戶端來發送同樣的郵件,卻沒有問題,說到底還是程式碼的問題?(outlook沒試過,估計也不會有問題)

相關推薦

郵件事務失敗 伺服器響應:DT:SPM 163 smtp

幾年前我做的一個專案,日發郵件最高峰時幾十萬。自以為對郵件傳送方面已經有了一定認識,所以近期機緣巧合之下,又有專案需要傳送郵件,不禁自信滿滿,暗自慶幸能不手到擒來乎? 不想老革命遇到新問題。我原先的郵件傳送機制,是生成eml檔案,然後扔到windows自帶的s

郵件 事務失敗 伺服器響應 DT SPM 163 smtp

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Python smtp郵件提示錯誤554, b'DT:SPM 163 smtp1

使用163郵箱的SMTP服務,傳送到QQ郵箱時出現錯誤: 注意,你是用的password應該是授權碼不是你的郵箱登陸密碼。 授權碼可以在你開通SMTP服務的時候得到。 554錯誤彙總: •554 DT:SPM 傳送的郵件內容包含了未被許可的資訊,或被系統識別為垃圾郵件。請檢查是否有

寫程式碼 實現使用者輸入使用者名稱和密碼,當用戶名seven且密碼123時,顯示登入成功,否則登入失敗

# 寫程式碼# 實現使用者輸入使用者名稱和密碼,當用戶名為seven且密碼為123時,顯示登入成功,否則登入失敗。username = input("Please enter your username: ")password = input("Please enter your password: ")if

IIS 部署專案時提示“錯誤訊息401.2 未經授權伺服器配置導致登陸失敗” 的解決辦法?

IIS 部署專案時提示:“錯誤訊息401.2 :未經授權:伺服器配置導致登陸失敗。” 的解決辦法? 這個錯誤的定位:你的站點使用了Forms驗證,而且在部署在生產環境的時候,設定錯誤,或者註釋了。 解決辦法: 1、檢查Forms配置是否遮蔽。 2、有許可權訪問的資源是否已經開發。

嘗試從資料庫進行更新時,遇到“System.InvalidOperationException”的異常異常訊息“此事務中涉及的XmlModel不能編輯”

將vs2017建立的web專案新增到TFS後,採用從資料庫更新模型時,出現此異常。 推測是由於在TFS下,程式碼更新需要首先將程式碼遷出然後進行編輯,而從資料庫更新模型時由vs自動更新程式碼資料,可能在此過程中未能遷出或者說獲取到更新某檔案的許可權,然後更新出錯

事件ID 18456使用者登入失敗 原因: 基於令牌的伺服器訪問驗證失敗,出現基礎結構錯誤

事件型別:稽核失敗 事件來源:MSSQLSERVER 事件種類:登入  事件 ID:18456 日期:2015-4-22 事件:11:11:21 使用者:域\計算機名 計算機:域 描述: 使用者 '域\計算機名$' 登入失敗。 原因: 基於令牌的伺服器訪問驗證失敗,出現基礎

郵件發送失敗問題Sending the email to the following server failed : smtp.qiye.163.com:25

其他 授權 exc bsp java 發送 dmi sendemail fail [郵件發送錯誤] : Sending the email to the following server failed : smtp.qiye.163.com:25, {}org.apache

UWP DEP0700: 應用程序註冊失敗[0x80073CF9] 另一個用戶已安裝此應用的未打包版本當前用戶無法將該版本替換打包版本

.cn 打包 ive 另一個 pan package 用戶 AC size 原文:UWP DEP0700: 應用程序註冊失敗。[0x80073CF9] 另一個用戶已安裝此應用的未打包版本。當前用戶無法將該版本替換為打包版本。最近電腦抽風,我在【應用程序和功能】中重置了以下我

關於QQ郵箱“命令順序不正確 服務器響應:Error: need EHLO and AUTH first !”問題

email lse 收件人 opera str mage com cat odin 1、首先在QQ郵箱當中開啟“POP3/SMTP服務” .2、獲取“授權碼 剛開始一直使用郵箱的密碼。後面才發現,原來QQ郵箱通過第三方

伺服器響應封裝一個泛型類

/** * * 返回前端資料封裝 */ //當序列化Json物件時,如果是null的物件,key也會消失 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class ServerResponse<T&

題目兩個乒乓球隊進行比賽,各出三人甲隊a,b,c三人,乙隊x,y,z三人已抽籤決定比賽名單有人向隊員打聽比賽的名單,a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手大的名單

通過迴圈巢狀安排對戰順序,再用if語句判斷避免參賽的隊員重複,最後通過題目要求篩選出符合題意的對手。 public class Test18 { public static void main(String[] args) { char a,b,c; for(a = 'x'; a &l

安裝 SQL Sever 2000至最後步驟報錯“安裝程式配置伺服器失敗 參考伺服器錯誤日誌和 C: \Windows\sqltsp.log 瞭解更多資訊”

在安裝 SQL Sever 2000至最後步驟報錯“安裝程式配置伺服器失敗。 參考伺服器錯誤日誌和 C: \Windows\sqltsp.log 瞭解更多資訊” ,如 圖: 解決方法 解除安裝原有的 SQL Server 刪除 Microsoft SQL Server目錄

用Spring的郵件封裝類JavaMailSenderImpl傳送郵件注意埠號不需要設定(設定了反而linux上釋出後傳送失敗)

===》###注意埠號不需要設定:》加不加埠:window都行,linux加了埠反而發不出去! 是的。配置了埠,Windows沒問題。linux就有問題了。仔細檢視錯誤資訊: 發現是 JavaMail API 程式碼問題。排除了是我的程式碼邏輯問題。 而且是埠超時問題。 看到這

有效解決VS2015 無法啟動 IIS EXPRESS Web 伺服器(IDxxxxx的執行緒當前未執行)

今天早上開啟專案突然發現報瞭如標題描述的問題。因為我的防火牆本身就是關的,所以和防火牆沒關係。還有就是我的其他專案可以執行。在開啟系統日誌看了看發現於是就有了以下解決辦法: 第一種方法:用記事本或者其他編輯器開啟專案中以.csproj結尾的檔案,把<WebProjec

如何解決VMware Workstation 拷貝貼上失效的問題(能拷貝出來,粘不回去貼上失敗 請檢查您的輸...... 無法轉換按鍵)

#錯誤表現: 可以從虛擬機器複製出來,但是貼上不回去,檔案貼上好像也沒問題 通過vmware選單裡的貼上操作,提示: vmware 貼上失敗 請檢查您的輸… 無法轉換為按鍵 #解決辦法: 點關閉虛擬機器,選擇“在後臺執行” 點啟動虛擬機器,解決 示意圖如下

【已解決】iphone 登出賬號的時候報錯驗證失敗,連線到伺服器時出現問題

iphone 登出賬號的時候報錯:驗證失敗,連線到伺服器時出現問題,如下 在網上查了半天一點都沒有用 最後撥打的蘋果熱線,原來是蘋果的網路許可權的問題,預設的是把“設定”應用的網路關閉的,只需要把網路裡面“設定”這個應用的網路允許“WLAN與蜂窩行動網路”。 第

遠端伺服器系統升級後,使用SSH登陸不上報錯Host key verification failed.

主要原因是:系統升級後會重新生成一份主機金鑰,然而自己的機子中儲存的確是之前的金鑰,與遠端主機發送RSA金鑰的指紋不同。所以將自己機子中的金鑰刪除即可。 報錯如下: 1.刪除known_host

ERROR通過埠 1433 連線到主機 localhost 的 TCP/IP 連線失敗錯誤:“Connection refused: connect請驗證連線屬性,並檢查 SQL Server 的例項正在主機上執行,且在此埠接受 TCP/IP 連

ERROR:通過埠1433連線到主機localhost的TCP/IP連線失敗。錯誤:“Connection refused: connect。請驗證連線屬性,並檢查SQL Server的例項正在主機上執行,且在此埠接受TCP/IP連線,還要確保防火牆沒有阻止到此埠的TCP