asp.Net開発踿歩編〔3〕.Netメール一括送信

10455 ワード

最近のプロジェクトでは、給与明細を一括送信する機能があり、神秘的なようですが、実は簡単です.前から知っていた.NetにはそれぞれEmail送信を実現するネーミングスペースがありますが、ちょうど今回は実践できます.ここでまた賛美しなければなりません.Net、はははは本当に仕事が上手で、簡単に実現します.
くだらないことは言わないで、直接テーマに入りましょう.機能の要件は、毎月給与レポートの生成後にトリガーされ、アドレス帳の各従業員のメールボックスに一括送信できることです.だから私はメールを送るclassを書いて、フォローを使うときに直接使えばいいです.メールを送信するネーミングスペースはSystemです.Net.Mail、使用も簡単です〔コードは下を参照〕
 

  
    
/// <summary>
///
/// </summary>
/// <param name="mailHs"> hs[key: # [ ]; value: ] </param>
/// <param name="smtpAuthUsername"> </param>
/// <param name="smtpAuthPassword"> </param>
public void Send(Hashtable mailHs, string smtpAuthUsername, string smtpAuthPassword, string smtpServer, string titel, string subject)
{
string meg = string .Empty;


//
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer);
//
smtp.Credentials = new System.Net.NetworkCredential(smtpAuthUsername, smtpAuthPassword);

//
// smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);
System.Net.Mail.MailMessage mail;

foreach ( string var in mailHs.Keys)
{
string [] list = var.Split( ' # ' );
try
{
mail
= new System.Net.Mail.MailMessage();
mail.From
= new System.Net.Mail.MailAddress(smtpAuthUsername, titel);
//
mail.ReplyTo = new System.Net.Mail.MailAddress(smtpAuthUsername, titel);
//
mail.To.Add(list[ 0 ]);
//
mail.Priority = System.Net.Mail.MailPriority.Normal;
// html
mail.IsBodyHtml = true ;
//
mail.Subject = subject;
//
mail.Body = mailHs[var].ToString();

smtp.Send(mail);
// ;, list[1]);
meg = string .Format( " {0} {1} 。 " , System.DateTime.Now.ToString(), list[ 1 ]);
WriteLog(meg);
}
catch
{
meg
= string .Format( " {0} {1} 。 " , System.DateTime.Now.ToString(), list[ 1 ]);

WriteLog(meg);
}
}
}

 
 
コードでは、メールの同期送信、非同期送信を使用していますが、両方の方法には独自のアプリケーションシーンがあります.私の機能需要は給与明細を一括送信するため、メールボックスの一人一人の情報は異なります.だから同期送信で、hashtableでアドレスと内容を格納して、それから1サイクル、送信が完了します.使用するロットが1通のメールで複数の人を大量に送信すれば、非同期で送信することができ、パフォーマンスが向上し、ビッグデータ量で死ぬことを避けることができます.非同期のときは、このコールバックを使用してください.
smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback); 
これにより、結果のフィードバックを送信するなど、この方法に後続の処理を書くことができる.私の機能実装ではlogです.txtファイルにログファイルを書き込みます.これにより、送信が完了すると、送信の結果を表示できます.同期は言わないで直接完成した後、方法を書いてokになりました.簡単で実用的で、本当に家にいる必要があります.
分かち合いました!交流を歓迎します!知識は小さいが,蓄積に重点を置いている.