您正在使用哪種版本的ColdFusion?我很驚訝你沒有遇到超時問題。自ColdFusion 6以來,我們一直在將HTML,TEXT和電子郵件列表保存到一個單獨的數據庫中,然後對數據進行後臺任務循環並以較小批量發送。
您是否考慮過使用交易電子郵件服務?我們最近從Mandrill切換到SparkPost(Free tier = 100,000 messages/mo),因爲它們將它們轉換爲MailChimp。這種類型的服務將爲您提供最佳狀態&跳出/讀取/點擊檢測(使用CFHTTP發送40k郵件需要大約2秒鐘)。您還可以使用「標記」來發送您正在發送的帳戶,以便您可以跟蹤或爲每個客戶設置單獨的帳戶。 (注意:如果您使用SMTP API,請務必爲每個SMTP客戶設置唯一的DNS CNAMES,否則ColdFusion可能會使用現有的身份驗證連接並使用錯誤的SMTP帳戶發送郵件。)
除了SMTP連接消息),REST API可用,它允許您在包含HTML/TEXT模板,電子郵件列表,替換參數,活動ID,標記,可選標題等的單個JSON包中生成&。我更願意通過這些服務發送,因爲它不會導致我的IP被列入黑名單或導致延誤時間敏感的郵件。
下面是各種交易電子郵件提供商的比較圖表。
http://socialcompare.com/en/comparison/transactional-emailing-providers-mailjet-sendgrid-critsend
下面是使用SparkPost樣本REST API調用。 (我提供這個,因爲幾乎沒有第三方服務提供CFML代碼樣本。)
<cfscript>
APIKey = "abc123";
/* Generate Message Object */
messageObject = {
"campaign_id" = "Test1234",
"options" = {
"open_tracking" = Javacast("boolean", true),
"click_tracking" = Javacast("boolean", true)
},
"recipients" = [
{"address" = {"email" = "[email protected]", "name"="User 1 Name"}, "substitution_data"= {"fullname"="Mr. User 1"}},
{"address" = {"email" = "[email protected]", "name"="User 2 Name"}, "substitution_data"= {"fullname"="Ms. User 2"}},
],
"content" = {
"tags" = ["testing", "demo"],
"from" = {"email"="[email protected]", "name"="My Name"},
"subject" = "Oh hey {{fullname}} (#Request.DateTimeFormat(StartTime,'m/d/yyyy')#)",
"html" = "<b>Testing REST API {{fullname}}</b><br><br>Sending email using a transactional email service.",
"text" = "Testing REST API {{fullname}} - Sending email using a transactional email service.",
"headers" = {
"X-CUSTOM-HEADER" = "foo bar"
}
}
};
/* Recommend using JSONUtil for proper casting of boolean values */
JSONUtil = CreateObject("component","JSONUtil");
MessageJSON = JSONUtil.Serialize(var=messageObject, strictMapping=true);
</cfscript>
<cfhttp url="https://api.sparkpost.com/api/v1/transmission" method="post" result="httpResp" timeout="60" getasbinary="never">
<cfhttpparam type="header" name="Content-Type" value="application/json">
<cfhttpparam type="header" name="Authorization" value="#APIKey#">
<cfhttpparam type="body" value="#MessageJSON#">
</cfhttp>
<CFDUMP VAR="#httpResp#">
感謝您的答覆....使用'的ColdFusion 11 IM,視窗2012,sendgrid' –
所以你說,如果即時通訊API在我的情況下即時通訊使用sendgrid它可以發送40K在一個拍攝? –
使用SendGrid的「mail.send」端點,它們只允許「每個API請求最多10,000個收件人」。您必須執行4個以上的帖子才能發送一封電子郵件作業。他們還需要將收件人地址發佈到單獨的表單字段中(ugh,10,000+表單字段?)https://sendgrid.com/docs/API_Reference/Web_API/mail.html它似乎沒有允許替換參數(即hello {name})。 –