Thứ Ba, 31 tháng 3, 2009

Sending E-Mail to Multiple Users from a Database

The Question:

Anyone done this yet... I am interested in making a mail list system that will query database for email address for users and send out a generic e-mail.

The Answer:

This can be done using the System.Web.Mail namespace. This namespace has two classes you will use to accomplish this, MailMessage and SmtpMail. The MailMessage class represents a single e-mail message, and the SmtpMail class is used to send the MailMessage using the configured SMTP server.

The following code should be used in a method or event handler where the e-mail address are retreived from a database. Here you loop through the e-mail addresses, changing the "To" property of the MailMessage and sending it.

[VB]
'cmd is a SqlCommand that gets email addresses

Dim _r As SqlDataReader = cmd.ExecuteReader()
Dim _mm As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage()
_mm.From = "me@mydomain.com"
_mm.Body = "This is my e-mail message"
While _r.Read()
_mm.To = _r("Email")
System.Web.Mail.SmtpMail.Send(_mm)
Loop

[C#]
//cmd is a SqlCommand that gets email addresses

SqlDataReader _r = cmd.ExecuteReader();
System.Web.Mail.MailMessage _mm = new System.Web.Mail.MailMessage();
_mm.From = "me@mydomain.com";
_mm.Body = "This is my e-mail message";
while ( _r.Read() )
{
_mm.To = _r["Email"];
System.Web.Mail.SmtpMail.Send(_mm);
}

*Note: This thype of function is limited to the timeout settings of a Web request, so it will only work for up to around 1,000 e-mail addresses.

Không có nhận xét nào:

Đăng nhận xét