我的总体目标是在我们的应用代码中使用一个单独的“SendIntranetEmail”功能,该功能会在我们的Intranet应用中发送所有电子邮件。现在他们都散了。
理想情况下,我希望将“SendIntranetEmail”功能传递给主题,正文,页脚和收件人(to,cc(可选),& bcc(可选))和(可选)。我的挂机是如何将“SendIntranetEmail”功能传递给收件人列表。
我们正在使用ASP.NET / VB,我正在使用其他功能提取电子邮件地址(来自SQL和LDAP)。这两个函数都返回数据表中的电子邮件地址。所以我应该将“SendIntranetEmail”函数传递给一个数组,还是可以将它发送给MailAddressCollection和/或MailAddress。什么是最好的方式,怎么样?我能想出的数组。我只是希望使用MailAddress / MailAddressCollection类有一个更简单的方法。
由于 约什
编辑 - 此外,我意识到我可以将DT传递给主函数并通过行循环。但我想知道是否有更有效的方式使用Mail类。
答案 0 :(得分:3)
@Joshua,MailAddressCollection可以正常工作。这是一个例子:
Public Class Class1
Sub init()
Dim dt As New DataTable
'load DataTable here
Dim addresses As New Net.Mail.MailAddressCollection
For Each row As DataRow In dt.Rows
addresses.Add(row("email").ToString())
'You could also do this for a pretty email name
'addresses.Add(String.Format("{0} <{1}>", row("name"), row("email")))
Next
sendEmails(addresses)
End Sub
Sub sendEmails(addresses As Net.Mail.MailAddressCollection)
Dim mail As New Net.Mail.MailMessage()
For Each address As Net.Mail.MailAddress In addresses
mail.To.Add(address)
Next
'set message details
'send mail
End Sub
End Class
答案 1 :(得分:1)
您可以执行您解释的任一选项,这是首选项(Array,MailAdressCollection,DataTable)。我会选择MailAddressCollection
,因为您在创建MailAddress
实例时会立即获得电子邮件地址验证。然后,您可以捕获格式错误的电子邮件并在尝试将其发送到您的函数之前进行报告。