2016-02-11 86 views
2

我想通過數據庫查詢循環並將電子郵件發送到我從查詢中獲得的電子郵件地址。 這是我的一段代碼。ASP經典,循環查詢和發送電子郵件

do until rs.EOF 
    Set myMail = CreateObject("CDO.Message") 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="relay-hosting.secureserver.net" 
    myMail.Configuration.Fields.Update 
    myMail.Subject= subject 
    myMail.From="[email protected]" 
    myMail.To = rs("Email") 
    myMail.HTMLBody = strMessage & "Some Message" 
    myMail.Send 
    Set myMail = Nothing 
    rs.MoveNext 
loop 

我已搜索並嘗試不同的解決方案,沒有任何運氣。 代碼的下面的行似乎有一個問題,但我找不到,當我用任何東西

myMail.To = rs("Email") 

給予任何答覆或建議,請記住之前,

  • 此代碼工作正常在「TO」 CDO消息對象的屬性
  • 該查詢給出精確的結果
  • 靜態電子郵件地址我接收500內部服務器錯誤當我使用動態的電子郵件(電子郵件從查詢)在CDO消息的「TO」屬性目的。我無法訪問IIS以啓用詳細的錯誤消息。
+0

沒有實際的錯誤信息幾乎不可能告訴。當你說「準確的結果」時,這意味着什麼?查詢的返回值是多少?您使用的硬編碼值是多少? –

+1

非常仔細地檢查您的查詢結果。至少有一個rs(「Email」)值不是有效的電子郵件地址。沒有其他解釋。 – Keith

+0

@SeanLange從「準確的結果」我的意思是查詢結果給我所需的電子郵件地址。我硬編碼我的電子郵件地址接收電子郵件,我收到他們。但是當我使用動態值時,它會給出錯誤。請讓我知道,如果你仍然不清楚我的意思 – Atif

回答

2

那麼,正如其他人在評論中所看到的那樣,沒有實際的錯誤信息,這很難說。有許多可能的來源:

  • 記錄在此時關閉出於某種原因
  • 存在記錄沒有「電子郵件」字段
  • E-Mail地址無效
  • ...

的好處是,你可以使用傳統的ASP錯誤處理,以找到這樣的錯誤:

on error resume next 

do until rs.EOF 
    Set myMail = CreateObject("CDO.Message") 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="relay-hosting.secureserver.net" 
    myMail.Configuration.Fields.Update 
    myMail.Subject= subject 
    myMail.From="[email protected]" 
    myMail.To = rs("Email") 
    myMail.HTMLBody = strMessage & "Some Message" 
    myMail.Send 

    if err then 
     Response.write "<code>" & err.Source & " - " & err.Description & "</code>" 
    end if 

    Set myMail = Nothing 
    rs.MoveNext 
loop 

on error goto 0 

即使在傳統的ASP(search SO或請參閱this solution)中,當然也有更好的方法來處理這些錯誤。這只是爲了幫助您在無法訪問IIS設置時發現錯誤。

+0

記錄集中有電子郵件字段,電子郵件的格式是有效的(我已經通過將它們寫入頁面來看到它們),不能想到任何可以關閉記錄集的原因。嘗試錯誤處理,但錯誤代碼是0.使用web.config文件覆蓋錯誤顯示設置,現在我看到請求超時錯誤。但是,當我使用「TO」屬性中的靜態電子郵件地址發送電子郵件時,相同的代碼會在幾秒鐘內執行。 – Atif

+0

也許'rs(「電子郵件」)'某處是NULL?添加CStr()將其轉換。 – gpinkas

+0

我有雙重檢查,記錄集中的每一行都有一個有效的電子郵件地址。我曾嘗試CStr()沒有任何運氣。無論如何,謝謝你在這裏的每一個時間。我將不得不繼續挖掘來解決這個問題。 – Atif