2011-11-26 72 views
2

我收到了一封電子郵件發送到的電子郵件地址列表。郵件功能通過數據庫中的列表進行循環,但如果遇到格式錯誤的電子郵件地址,則會暫停並跳出循環。我嘗試使用try/catch來捕獲錯誤,並希望它能夠繼續循環,但它不能像我所希望的那樣工作。代碼如下。如果任何人有任何想法,或者可能是一個正則表達式,我可以在循環之前篩選電子郵件地址以篩選出不好的電子郵件地址,那真是太棒了。ColdFusion通過郵件功能嘗試抓取循環

謝謝。

<!---Try to send the mail(s)---> 
<cftry> 
    <cfmail to="<#Auctioneer.email#>" from="#emailSite#" subject="#Email.subject#" server="#emailServer#" query="Auctioneer" type="html"> 
     <!---Some email content---> 
    </cfmail> 

    <cfcatch type="Application"> 
     <cflog text="#cfcatch.detail#" file="mail" type="Error" application="yes"> 
     <cfmail to="[email protected]" from="#emailSite#" subject="Invalid E-Mail Address" type="html"> 
      Email address not valid error. 
      #Auctioneer.email# 
      <cfdump var="#cfcatch.detail#"> 
     </cfmail> 
    </cfcatch> 
</cftry> 

回答

2

你想要什麼,通過這些地址是循環,驗證它們只爲有效條目發送郵件。事情是這樣的

<cfloop query="getEmails"> 
    <cfif isValid("email", Auctioneer.email) 
    ...send valid email... 
    <cfelse> 
    ...send invalid email, or better log in database... 
    </cfif> 
</cfloop> 

附:無需將<>放入to

+0

不過要小心。看起來'isValid(「email」,...)'可以拒絕一些有效的電子郵件地址。 – ale

2

您可以嘗試首先驗證查詢中的電子郵件地址。

對我而言,我從來不喜歡讓CFMAIL標籤管理查詢。它似乎總是比它的價值更麻煩。我平時做這樣的事情:

<cfoutput query="Auctioneer"> 
    <cftry> 
    <cfmail to="#email#" from="#variables.emailSite#" subject="#variables.subject#" server="#application.emailServer#" type="html"> 
     <!---Some email content---> 
    </cfmail> 

    <cfcatch type="Application"> 
     <cflog text="#cfcatch.detail#" file="mail" type="Error" application="yes"> 
     <cfmail to="[email protected]" from="#variables.emailSite#" subject="Invalid E-Mail Address" type="html"> 
      Email address not valid error. 
      #email# 
      <cfdump var="#cfcatch.detail#"> 
     </cfmail> 
    </cfcatch> 
    </cftry> 
</cfoutput> 
0

我會親自循環他們,捕捉錯誤並繼續循環。

for(var i = 1; i < Auctioneer.recordCount; i++) { 
    try { 
     //send email 
    } catch (Any e) { 
     //log 
     continue; 
    } 
} 
+0

它可能只是爲了清晰起見,但從技術上講,由於'try/catch'在循環中,因此不需要'continue'。 – Leigh