2016-03-08 46 views
2

當前場景: 使用cfmail標記查詢例如。coldfusion 11假脫機程序和cfmail線程

<cfmail 
    query="qName" 
    to="#tomailvar#" 
    from="#frommailvar#>" 
    subject="#subjectvar#" 
    type="html" 
    server="smtp.sendgrid.net" 
    timeout="360" 
    username="#myuservar#" 
    password="#mypwdvar#" 
> 

我該怎麼做線程在cfmail標記或當前的代碼?

我有客戶他們發送幾乎40K在一個拍攝一段時間更多。 我給了我的客戶多個帳戶,有時他們同時有兩個用戶或三個用戶發送40k + 40k +電子郵件。

有沒有一種方法可以計算後臺打印程序文件夾中的消息並驗證我的查詢總數?

什麼是正確的方式來處理這麼多的電子郵件?

回答

4

您正在使用哪種版本的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#"> 
+0

感謝您的答覆....使用'的ColdFusion 11 IM,視窗2012,sendgrid' –

+0

所以你說,如果即時通訊API在我的情況下即時通訊使用sendgrid它可以發送40K在一個拍攝? –

+0

使用SendGrid的「mail.send」端點,它們只允許「每個API請求最多10,000個收件人」。您必須執行4個以上的帖子才能發送一封電子郵件作業。他們還需要將收件人地址發佈到單獨的表單字段中(ugh,10,000+表單字段?)https://sendgrid.com/docs/API_Reference/Web_API/mail.html它似乎沒有允許替換參數(即hello {name})。 –