我有一个电子邮件发送到的电子邮件地址列表。邮件功能从数据库中循环遍历列表,但如果遇到格式错误的电子邮件地址,则会停止并中断循环。我已经尝试使用try / catch来捕获错误,并希望它能够继续循环,但它并没有像我希望的那样工作。代码如下。如果有人有任何想法,或者可能是正则表达式,我可以在循环之前筛选出电子邮件地址以过滤掉不良内容,那就太棒了。
感谢。
<!---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="admin@website.co.uk" from="#emailSite#" subject="Invalid E-Mail Address" type="html">
Email address not valid error.
#Auctioneer.email#
<cfdump var="#cfcatch.detail#">
</cfmail>
</cfcatch>
</cftry>
答案 0 :(得分: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="admin@website.co.uk" from="#variables.emailSite#" subject="Invalid E-Mail Address" type="html">
Email address not valid error.
#email#
<cfdump var="#cfcatch.detail#">
</cfmail>
</cfcatch>
</cftry>
</cfoutput>
答案 1 :(得分:2)
您想要的是遍历地址,验证它们并仅发送有效条目的邮件。像这样的东西
<cfloop query="getEmails">
<cfif isValid("email", Auctioneer.email)
...send valid email...
<cfelse>
...send invalid email, or better log in database...
</cfif>
</cfloop>
P.S。无需将<>
放入to
。
答案 2 :(得分:0)
我会亲自遍历它们,捕获错误并继续循环。
for(var i = 1; i < Auctioneer.recordCount; i++) {
try {
//send email
} catch (Any e) {
//log
continue;
}
}