在.net 1.1裡面,如何用程式控制來傳送電子郵件。例如,網站使用者註冊成功後,給註冊用戶自動發送電子郵件,提示使用者的註冊資訊。再則,有時候需要每天定時的把一個報表發給固定的幾個人。綜合起來需要解決以下的幾個問題:
1、SMTP伺服器身份認證。
2、收件人為多人時,怎麼發送。
3、發送郵件附件。
實作程式如下:
為了使用System.Web.Mail,在名字空間裡引用:
using System.Web.Mail;
定義一個傳送郵件的過程
/**//// <summary>
/// 傳送電子郵件郵件
/// </summary>
/// <param name="to">接收電子郵件地址</param>
/// <param name="subject">郵件主題</param>
/// <param name="body">郵件正文</param>
/// <param name="mailatta">附件</param>
public void SendMail(string to,string subject,string body,MailAttachment mailatta)
{
MailMessage m_Mail = new MailMessage();
//定義SMTP伺服器的名稱
SmtpMail.SmtpServer = "mail.13590.com";
//定義SMTP郵件伺服器需要身分認證
m_Mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1");
//認證的使用者名稱
m_Mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "username");
//認證密碼
m_Mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword","password ");
//定義郵件的寄件位址
m_Mail.From=""秋雨"< [email protected] >";
//定義郵件的接收位址
m_Mail.To = to.ToString();
//定義郵件的暗送位址
m_Mail.Bcc=" [email protected] ";
//定義郵件的抄送地址
m_Mail.Cc = " [email protected] ";
//定義郵件的主題
m_Mail.Subject = subject;
//定義郵件的主體
m_Mail.Body = body;
//'郵件以HTML的格式傳送
m_Mail.BodyFormat = MailFormat.Text;
//定義郵件的有限級,在此設定為高
m_Mail.Priority = MailPriority.High;
// 給傳送的郵件附加上一個附件
if (mailatta!=null)
{
m_Mail.Attachments.Add(mailatta);
}
try
{
SmtpMail.Send(m_Mail);
}
catch
{
//郵件發送有錯
Memo1.Text=Memo1.Text + subject;
}
}
注意郵件的地址""秋雨"< [email protected] >";
前面是顯示的名稱,後面是真實的Email地址,如果收件人地址為多人,以“;” 隔開,例如:
"秋雨"< [email protected] >;"管理員"< [email protected] > 注意使用轉義字元。
我們使用程式來調用
private void button_Click(object sender, System.EventArgs e)
{
string MailAddr=""秋雨"< [email protected]>; "管理員"< [email protected] > ";
string Subject="請查收統計報表";
string MailBody="Test";
string PathMailAtta=@"C:統計報表.xls";
MailAttachment mailatta;
try
{
mailatta= new MailAttachment(PathMailAtta);
}
catch
{
Memo1.Text=Memo1.Text+PathMailAtta+"有異常,檢查是否開啟";
return;
}
SendGroupMail(MailAddr,Subject,MailBody,mailatta);
}
以上程式在VS.Net2003,Windows 2003(SP1)平台下測試通過。