asp.Net開発踿歩編〔3〕.Netメール一括送信
10455 ワード
最近のプロジェクトでは、給与明細を一括送信する機能があり、神秘的なようですが、実は簡単です.前から知っていた.NetにはそれぞれEmail送信を実現するネーミングスペースがありますが、ちょうど今回は実践できます.ここでまた賛美しなければなりません.Net、はははは本当に仕事が上手で、簡単に実現します.
くだらないことは言わないで、直接テーマに入りましょう.機能の要件は、毎月給与レポートの生成後にトリガーされ、アドレス帳の各従業員のメールボックスに一括送信できることです.だから私はメールを送るclassを書いて、フォローを使うときに直接使えばいいです.メールを送信するネーミングスペースはSystemです.Net.Mail、使用も簡単です〔コードは下を参照〕
コードでは、メールの同期送信、非同期送信を使用していますが、両方の方法には独自のアプリケーションシーンがあります.私の機能需要は給与明細を一括送信するため、メールボックスの一人一人の情報は異なります.だから同期送信で、hashtableでアドレスと内容を格納して、それから1サイクル、送信が完了します.使用するロットが1通のメールで複数の人を大量に送信すれば、非同期で送信することができ、パフォーマンスが向上し、ビッグデータ量で死ぬことを避けることができます.非同期のときは、このコールバックを使用してください.
smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);
これにより、結果のフィードバックを送信するなど、この方法に後続の処理を書くことができる.私の機能実装ではlogです.txtファイルにログファイルを書き込みます.これにより、送信が完了すると、送信の結果を表示できます.同期は言わないで直接完成した後、方法を書いてokになりました.簡単で実用的で、本当に家にいる必要があります.
分かち合いました!交流を歓迎します!知識は小さいが,蓄積に重点を置いている.
くだらないことは言わないで、直接テーマに入りましょう.機能の要件は、毎月給与レポートの生成後にトリガーされ、アドレス帳の各従業員のメールボックスに一括送信できることです.だから私はメールを送る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になりました.簡単で実用的で、本当に家にいる必要があります.
分かち合いました!交流を歓迎します!知識は小さいが,蓄積に重点を置いている.