C#でのメール送信サンプル
.NET Framework2.0では、SMTPを利用してメールを送信するSmtpClientクラスが新たに追加になりました。これは以前のバージョンのSmtpMailクラスに変わるものです。SmtpMailクラスは、CDO(Collaboration Data Objects for Windows 2000)を利用してメールを送信していましたが、SmtpClientクラスは、CDOを利用しません。これにより、OSに依存することはなくなりました。
このSmtpClientを利用したサンプルです。基本的なメール送信機能の他にPOP Before SMTPの機能を実装しました。以前のBASP21を利用したメール送信の記事でも書きましたが、POP Before SMTPでは通常、実際にメールを受信するのではなく、ユーザ名、パスワードを指定して、STATコマンドを実行します。C#(.NET Framwork2.0)では、メール受信というクラスはないようで、単純にSocketのTcpClientクラスでSTATコマンドを実行します。
TcpClientでのメール受信については、たとえばですが参考サイトが参考になるかと思います。メール受信に関して詳細な説明とプログラムがあります。
実行画面

以下、プログラムの一部です。プログラム全体は、お手数ですが、ダウンロードしてご覧下さい。
private void cmdSend_Click(object sender, EventArgs e)
{
//砂時計
Cursor.Current = Cursors.WaitCursor;
//POP Before SMTPの実行
if(chkPOP.Checked)
{
bool bret = execPOPStat();
if(!bret)
{
return;
}
}
//メール送信
try
{
SmtpClient client = new SmtpClient(txtSMTPServer.Text);
MailMessage mess = new MailMessage(txtFrom.Text, txtTo.Text);
mess.Subject = txtTitle.Text;
mess.SubjectEncoding = Encoding.GetEncoding("ISO-2022-JP");
mess.Body = txtBoxBody.Text;
mess.BodyEncoding = Encoding.GetEncoding("ISO-2022-JP");
//添付ファイル
foreach (ListViewItem viewitem in lstAttch.Items)
{
Attachment attache = new Attachment(viewitem.Text);
mess.Attachments.Add(attache);
}
//送信
client.Send(mess);
}catch(Exception ex)
{
MessageBox.Show(ex.Message);
Cursor.Current = Cursors.Default; //マウスカーソル
return;
}
//マウスカーソル
Cursor.Current = Cursors.Default;
MessageBox.Show("送信完了");
}
Visual C# 2005 Express Editionのファイル一式を以下に置きました。
プロジェクトファイル一式
動作確認しましたが、動作は保証できません。このプログラムを利用しての不具合、不利益には一切の責任を負いかねます。ご了承ください。
参考サイト
十兵衛のブログ:メールを受信する
Windowsプログラミング関連記事
Posted by nishida at 23:06:45


