「[[マイクロソフト系技術情報 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: [[:インフラストラクチャ]], [[:通信技術]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS