2015-05-27 204 views
4

步骤SendGrid营销电子邮件延迟?

  1. 创建收件人列表
  2. 创建营销电子邮件
  3. 添加电子邮件,收件人列表
  4. 指定收件人列表营销电子邮件

当调试慢慢地,我管理从sendgrid传递所有成功消息的步骤。

但在非调试模式下,尽管我向收件人列表成功添加了电子邮件(结果从sendgrid返回),但在步骤4中,我收到了结果返回没有收件人的列表。我刷新了浏览器,并在收件人列表中看到了电子邮件。

我试图把timer.interval开始之前处理第4步,但也得到相同的结果返回。

VB ProcessHandler代码

' Add email and name to recipient list 
If oSendMarketingEmail.AddEmailToList(oItemDetails.Email, oItemDetails.Full_Name, sRecipientList) = False Then Exit Try 

' Wait for the email and name added to recipient list 
Dim timer As New Timers.Timer 
timer.Interval = 20000 

' Assigning recipient list to marketing email 
    If oSendMarketingEmail.AddListToMarketingEmail(sMarketingEmailName, sRecipientList) = False Then Exit Try 

VB功能代码

Public Function AddEmailToList(sEmailAddress As String, sName As String, sRecipientList As String) As Boolean 

     Dim ResultsHTML As String = "" 

     Dim URL As String = (Convert.ToString("http://sendgrid.com/api/newsletter/lists/email/add.xml?list=") & sRecipientList) + "&data=" + "{""email"":""" + sEmailAddress + """,""name"":""" + sName + """}" + "&api_user=" + SendGridUserName + "&api_key=" + SendGridPassword 
     Dim SendGridResponse As String = PerformHTTPGet(URL) 
     ResultsHTML += (Convert.ToString("Adding email to List: ") & SendGridResponse) + "<br/>" 

     ' Check respond status - success 
     If Not ResultsHTML.Contains("insert") Then logger.log.Info(ResultsHTML) : Return False Else Return True 

    End Function 


    Public Function AddListToMarketingEmail(sMarketingEmailName As String, sRecipientList As String) As Boolean 

     Dim ResultsHTML As String = "" 

     'Assign list to marketing email 
     Dim URL As String = (Convert.ToString((Convert.ToString("http://sendgrid.com/api/newsletter/recipients/add.xml?name=") & sMarketingEmailName) + "&list=") & sRecipientList) + "&api_user=" + SendGridUserName + "&api_key=" + SendGridPassword 
     Dim SendGridResponse As String = PerformHTTPGet(URL) 
     ResultsHTML += (Convert.ToString("Assigning Marketing Email to List: ") & SendGridResponse) + "<br/>" 

     ' Check respond status - success 
     If Not ResultsHTML.Contains("success") Then logger.log.Info(ResultsHTML) : Return False 

    End Function 

回答

0

在SendGrid,列表计数可能需要一点时间来更新。 “强制”它的一种方法是查询完整列表,这会触发系统计数,并更新计数,然后允许您正确连接它。

+0

您好jacob,我找到了一种解决这个问题的方法,即在添加列表到营销邮件之前,我放了一个system.threading.thread.sleep(毫秒)。它现在工作完美。您是否有任何想法或有任何解决方案可将每个收件人信息添加到营销电子邮件中,而无需重新创建它们? – belltric

+0

我找到了如何将收件人信息添加到营销电子邮件的方法。 我遇到的另一个问题是,在尝试向营销电子邮件中添加类别后,我前往UI以检查营销电子邮件是否属于该类别。该类别不会变成粗体。但是,当我创建营销电子邮件并选择类别时,该类别将变为粗体。你有什么想法可能会导致这种情况? – belltric

+0

代码 '将时事通讯类别添加到时事通讯 Dim URL As String =“https://api.sendgrid.com/api/newsletter/category/add.json”+“&api_user =”+ SendGridUserName +“&api_key =”+ SendGridPassword + “&类别=简讯” + “&name =” + EncodedNewsletterName 昏暗SendGridResponse的String = PerformHTTPGet(URL) ResultsHTML + =(Convert.ToString( “添加类别通讯: ”)SendGridResponse)+“
” '检查回复状态 - 成功 如果不是结果HTML.Contains(“success”)然后logger.log.Info(ResultsHTML):返回False Else返回True – belltric