2013-07-26 3 views
0

Моя общая цель - иметь 1 единственную функцию «SendIntranetEmail» в нашем коде приложения, которая отправляет все наши письма в нашем интранет-приложении. Прямо сейчас все они разбросаны.MailAddress vs MailAddressCollection и наилучшее использование

В идеале я хотел бы передать эту функцию «SendIntranetEmail» тему, тело, нижний колонтитул и получатели (в, cc (необязательно), & bcc (необязательно)) и из (необязательно). Моя зависание заключается в том, как передать функции «SendIntranetEmail» список получателей.

Мы используем ASP.NET/VB, и я тяну адрес электронной почты (от SQL и LDAP), используя другие функции. Обе эти функции возвращают адрес электронной почты в таблицах данных. Поэтому я должен передать функцию «SendIntranetEmail» массив или отправить его MailAddressCollection и/или MailAddress. Каков наилучший способ и как? Массив, который я могу выяснить. Я просто надеялся, что есть более простой способ с классом MailAddress/MailAddressCollection.

Благодаря Джош

EDIT - Кроме того, я понимаю, что можно передать в DT к основной функции и петли через строк. Но мне интересно, нет ли более эффективного способа использования класса Mail.

+1

WTH Почему голос вниз? !! – jharris8567

+1

Я проголосовал за вопрос. Хороший вопрос – Mike

ответ

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 
+0

Это прекрасно! СПАСИБО! – jharris8567

0

Вы можете сделать любой из параметров, которые вы объяснили, это вопрос предпочтения (Array, MailAdressCollection, DataTable). Я бы пошел с MailAddressCollection только потому, что вы получили подтверждение адреса электронной почты из коробки сразу же после создания экземпляра MailAddress. Затем вы можете поймать неправильную электронную почту и сообщить об этом, прежде чем пытаться отправить ее в свою функцию.

+0

Я бы с удовольствием. Это мое предпочтение, но я точно не знаю, как это сделать. Как я могу получить список своих электронных писем (из таблицы данных) в этот «MailAddressCollection», передать его моей функции, а затем «Добавить» каждый адрес в коллекции на мой (objMailMessage.To.Add) - надеюсь, это имеет смысл , – jharris8567

Смежные вопросы