「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>通信技術]] *目次 [#ad818906] #contents *概要 [#fc9651f8] メール送信・受信処理について *詳細 [#d1e8a8b5] **送信処理 [#j68d2367] メール送信処理は、.NETの標準的なAPIを使用して処理可能である。 ***SmtpClient [#yb03c7bc] ★ Obsoleteになっている。[[MailKit>#f750610f]]が後継。 // 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); - https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Notifications/CmnEmail.cs ***MailKit [#f750610f] [[SmtpClient>#yb03c7bc]]の後継。 -次の3つのメールクライアントAPIを提供している。 --SMTPクライアント --POP3クライアント --IMAP4クライアント -対応している主なプラットフォーム --.NET Framework 4.5以降 --.NET Standard 1.3以降 ---.NET Core 1.0以降 ---UWP 10.0.12040以降 --Xamarin.Android/Xamarin.iOS ***SendGrid [#c1b9ffd9] -クラウド型のメール配信サービス -WebAPIでメール送信処理を実装可能。 -大規模なメール配送を安全に行うには特別なノウハウがあり罠も多い。~ 辛い自前運用を、お金(サービス)で解決できる。 --最大送信量に合わせたインフラの確保 --IPアドレスのウォームアップ(IPウォームアップ)が必要 --開封率やクリック率の追いかけを効率化 -その他~ Amazon SES、Mailchimp、Mandrill **受信処理 [#j27e1c8e] -メール受信処理は複雑なため、メール受信処理をシステム内に組み込まないようにするか、若しくは、専用の製品を使用して処理を実装する。 -ただし、Dynamicsなどの最近のパッケージでは、[[メール受信処理(メールボックスの監視サービスなど)>CRMの電子メールの管理]]も実装している。さすがという感じ。 ***[[MailKit>#f750610f]] [#rd41bd23] POP3クライアントを実装するので受信処理も実装可能。 *その他 [#c7277aad] **携帯メールアドレス [#b8bb2d7b] -携帯向けにメール送信する場合は、携帯メールアドレス(RFCに準拠しないメールアドレス)に対応する必要があるか確認する。 -.NETでは、RFCに準拠しないメール アドレスをMailAddressクラスに設定すると~ 例外となることがある(これを利用して、RFCに準拠しないメール アドレスをチェックできる)。 -この場合、MailMessageクラスのToプロパティ(MailAddressCollectionクラス)にAddすると例外としないで処理できる。 -必要であるなら、携帯メールアドレス対応のコンポーネントを導入する --(.NET用SMTP/POPクラスライブラリ)~ http://www.agile-tech.com/product/maillib.aspx -当該アドレスにSMTPが対応していないケースもあるようである(Exchange 2000 Server、Server 2003) --@ の直前にピリオドがあるなどの RFC に準拠していないアドレスを含むメッセージを送受信できない~ http://support.microsoft.com/kb/281538/ja *参考 [#keeaf589] -SmtpClient Class (System.Net.Mail) | Microsoft Docs~ https://docs.microsoft.com/en-us/dotnet/api/System.Net.Mail.SmtpClient -メール運用がロストテクノロジーになっていく話 - Qiita~ https://qiita.com/koichiro/items/d65ac1af03b9063f0592 **MailKit [#jde8c3f6] -MailKitが公式に.NETのSmtpClientを置き換えることを明らかにした。~ https://www.infoq.com/jp/news/2017/04/MailKit-MimeKit-Official -電子メールを送信するには?(MailKit編)[.NET 4.5、C#/VB]:.NET TIPS - @IT~ http://www.atmarkit.co.jp/ait/articles/1811/21/news023.html **SendGrid [#ecaefd23] -SendGridとは | SendGrid~ https://sendgrid.kke.co.jp/about/ -SendGridでメール配送を始めるためのまとめ - Qiita~ https://qiita.com/shiru/items/0dbc48df217ffe51b1f3 ---- Tags: [[:インフラストラクチャ]], [[:通信技術]]