「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
メール送信・受信処理について
┌────── (SMTP) ──────┐ │ │ Mail Box ← MDA ← MTA(内) ⇔ MTA(外) ⇔ MTA(外) ⇔ MTA(内) → MDA → Mail Box ↓ ↑ ↑ ↓ MRA MSA MSA MRA ↓ ↑ ↑ ↓ (POP) (SMTP) (SMTP) (POP) ↓ ↑ ↑ ↓ MUA ───────┘ └─────── MUA
# | 項目 | 概要 | |
1 | Return-Path: メアド | エラーメールの返信先。 通常From。詐称可能。 | |
2 | Received: from MTA by MTA for メアド | 転送経路をスタックする | |
2-1 | from HELO コマンド値 (逆引値 [xxx.xxx.xxx.xxx]) | メールを送信したMTA ・HELO コマンド値(※ 詐称可) ・逆引値(※ 詐称不可) | |
2-2 | by | メールを受信したMTA | |
2-3 | for | 送信先メアド | |
3 | From: メアド | 送信元メアド(HELO コマンド値 ※ 詐称可) | |
4 | To: メアド | 送信先メアド |
# | 略号 | 名称 | ソフトウェア | |
1 | MUA | Mail User Agent. | OutlookなどのメーラーでMRA、MSAのクライアント | |
2 | MTA | Mail Transfer Agent | Exchangeなどのメールサーバで、MDA、MRA、MSAを同梱 | |
2-1 | MDA | Mail Delivery Agent | 着信メールをユーザのMail Boxにファイルする機能 | |
2-2 | MRA | Mail Retrieval Agent | POPやIMAPのメール受信の機能 | |
2-3 | MSA | Message Submission Agent | SMTPのメール送信の機能 |
メールの送受信を行う。
着信メールをユーザのMail Boxにファイルする
POPやIMAPで認証し、Mail Boxのメールを取り出す。
送信時、SMTP-AUTHが使用される場合、MSAの機能自体は省略されている。
電子メールで使われるプロトコル
メール送信処理は、.NETの標準的なAPIを使用して処理可能である。
★ Obsoleteになっている。MailKitが後継。
// messageオブジェクトを生成 System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); // 送信者を設定 message.From = new System.Net.Mail.MailAddress("xxxxx@yyyyy.co.jp", "西野 大介"); message.Sender = new System.Net.Mail.MailAddress("xxxxx@yyyyy.co.jp", "西野 大介"); // 件名を設定 message.SubjectEncoding = Encoding.GetEncoding("UTF-8"); message.Subject = "テスト メール"; // メッセージボディを設定 message.BodyEncoding = Encoding.GetEncoding("UTF-8"); message.Body = "本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n本文\r\n"; // 添付ファイルを設定 -------------------------------------------------- message.Attachments.Add( new System.Net.Mail.Attachment(@"C:\新規テキスト ドキュメント.txt", new System.Net.Mime.ContentType("test/plain; charset=UTF-8"))); message.Attachments.Add( new System.Net.Mail.Attachment(@"C:\新規Microsoft Word 文書.doc", new System.Net.Mime.ContentType("test/plain; charset=UTF-8"))); message.Attachments.Add( new System.Net.Mail.Attachment(@"C:\新規ビットマップ イメージ.bmp", new System.Net.Mime.ContentType("test/plain; charset=UTF-8"))); // --------------------------------------------------------------------- // addressコレクションオブジェクトを生成 ------------------------------- message.To.Add("xxxxx@yyyyy.co.jp"); message.CC.Add("xxxxx@yyyyy.co.jp"); message.Bcc.Add("xxxxx@yyyyy.co.jp"); // --------------------------------------------------------------------- // その他、オプション -------------------------------------------------- // 優先度 message.Priority = System.Net.Mail.MailPriority.Normal; // フォーマット message.IsBodyHtml = false; // 送信失敗時、レスを受信するかどうか message.DeliveryNotificationOptions = System.Net.Mail.DeliveryNotificationOptions.OnSuccess; // --------------------------------------------------------------------- // SmtpClientオブジェクトを作成 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("xxx.xxx.xxx.xxx"); // ネットワーク経由 client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; // タイムアウト値(ミリ秒)) client.Timeout = 5000; // 認証(デフォルト) client.UseDefaultCredentials = true; //// 認証(カスタム) //client.Credentials = new System.Net.NetworkCredential("username", "password"); // メッセージを送信 client.Send(message);
SmtpClientの後継。
POP3クライアントを実装するので受信処理も実装可能。
(IPアドレスの)レピュテーション
Tags: :インフラストラクチャ, :通信技術