- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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ウォームアップ)が必要
--IPアドレスのウォームアップ([[IPウォームアップ>#m5f50130]])が必要
--開封率やクリック率の追いかけを効率化
-その他~
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
**IPウォームアップ [#m5f50130]
-メルマガ配信などを行う、マーケティング領域のシステムなどで一般的な用語。
-メールが確実に届くように、IPアドレスのレピュテーションを上げること。
***レピュテーション [#a7479b4e]
(IPアドレスの)レピュテーション
-メール配信の重要な評価指標、メール送信元の信頼度。
-ISPはメールの送信者の正当性を、レピュテーションで判断。
-レピュテーションが低い場合、送信したメールは~
迷惑メールであると見なされ、受信拒否さ れる可能性が高くなる。
-新しいIPアドレスにはレピュテーションがないので、
--新しいIPアドレスからメールが配信されてもISPは、~
メール送信元の正当性を判断できず、メールが確実に届かない恐れがある。
--メールを確実に届けるために、IPウォームアップで新しいIPアドレスのレピュテーションを上げる。
***参考 [#l4eb6dd0]
-[[SendGrid>#ecaefd23]]
-マーケター必見!IPウォームアップに関する基礎知識~
(メルマガ・メールマーケティング入門) | Web担当者Forum~
https://webtan.impress.co.jp/u/2015/11/04/21433
*参考 [#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~
-SendGridとは~
https://sendgrid.kke.co.jp/about/
-IPウォームアップとは?~
https://sendgrid.kke.co.jp/guide/ip%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%A2%E3%83%83%E3%83%97%E3%81%A8%E3%81%AF%EF%BC%9F/
-SendGridでメール配送を始めるためのまとめ - Qiita~
-ドキュメント
--IPウォームアップを行う~
https://sendgrid.kke.co.jp/docs/Tutorials/D_Improve_Deliverability/ip_warmup.html
-ブログ
--IPアドレスのウォームアップ~
https://sendgrid.kke.co.jp/blog/?p=326
***SlideShare [#pfb51ba0]
-IPウォームアップとは?【SendGrid】~
https://www.slideshare.net/SendGrid_JP/ipsendgrid
***Qiita [#rca50716]
-SendGridでメール配送を始めるためのまとめ~
https://qiita.com/shiru/items/0dbc48df217ffe51b1f3
----
Tags: [[:インフラストラクチャ]], [[:通信技術]]