ホームページ >バックエンド開発 >C#.Net チュートリアル >.net はどのように電子メールを送信しますか?
ドキュメント ディレクトリ
概要
IEmailSender
ISmtpEmailSender
NullEmailSender
設定
MailKitを統合
インストール
統合
使用方法
カスタマイズ
概要
電子メールの送信は、ほぼすべてのアプリケーションで必要となる非常に一般的なタスクです。 Abp は、単純に電子メールを送信するための基本的なフレームワークを提供し、そのための電子メール サービスの構成を分離します。
IEmailSender
詳細を知らなくても簡単にメールを送信できるサービスです。 使い方は次のとおりです:
public class TaskManager : IDomainService {private readonly IEmailSender _emailSender; public TaskManager(IEmailSender emailSender) { _emailSender = emailSender; }public void Assign(Task task, Person person) {//Assign task to the persontask.AssignedTo = person;//Send a notification email _emailSender.Send( to: person.EmailAddress, subject: "You have a new task!", body: $"A new task is assigned for you: <b>{task.Title}</b>", isBodyHtml: true);} }
IEmailSender をインジェクトし、いくつかのオーバーロードされた Send メソッドを使用します。 MailMessage オブジェクトを受け入れることができるオーバーロードを含むバージョン (.net core には SmtpClient と MailMessage が含まれていないため、.net core では使用できません)。
ISmtpEmailSender
IEmailSender を拡張し、BuildClient メソッドを追加して SmtpClient を作成する ISmtpEmailSender もあり、SmtpClient を直接使用できます (.net core には SmtpClient が含まれていないため、.net core では使用できません)および MailMessage )。ほとんどの場合、ISmtpEmailSender を使用するだけで十分です。
NullEmailSender
NullEmailSender は、IEmailSender の Null オブジェクト設計パターンの実装であり、単体テストとプロパティの依存関係の注入で使用できます。
構成
電子メール送信では、設定管理システムを使用して、電子メール送信の構成を読み取ります。すべての設定の名前は、定数の形式で Abp.Net.Mail.EmailSettingNames クラスで定義されます。その値と説明は次のとおりです:
Abp.Net.Mail.DefaultFromAddress: デフォルトの電子メール送信者のアドレス (上記の例と同様)。
Abp.Net.Mail.DefaultFromDisplayName: デフォルトの電子メール送信者の表示名 (上記の例のように)。
Abp.Net.Mail.Smtp.Host: SMTP サーバーの IP またはドメイン名 (デフォルトは 127.0.0.1)。
Abp.Net.Mail.Smtp.Port: SMTP サーバーのポート (デフォルトは 25)。
Abp.Net.Mail.Smtp.UserName: SMTP サーバーが認証を必要とする場合に提供する必要があるユーザー名。
Abp.Net.Mail.Smtp.Password: SMTP サーバーが認証を必要とする場合に指定する必要があるパスワード。
Abp.Net.Mail.Smtp.Domain: SMTP サーバーが認証を必要とする場合に提供する必要があるドメイン名。
Abp.Net.Mail.Smtp.EnableSsl: SMTP サーバーが SSL 接続の使用を必要とするか (true)、否か (false) を示します (デフォルトは false)。
Abp.Net.Mail.Smtp.UseDefaultCredentials: True の場合、指定されたユーザーとパスワードの代わりにデフォルトの資格情報を使用します (デフォルトは true)。
統合された MailKit
.net コアは標準の System.Net.Mail.SmtpClient をサポートしていないため、幸いなことに、メールを送信するにはサードパーティのプロバイダーが必要です。デフォルトの Smtpclient には MailKit が適しています。代わりに、Microsoft はその使用を推奨しています。
Abp.MailKit パッケージは Abp の電子メール送信システムにエレガントに統合されているため、以前と同様に MailKit 経由で IEmailSender を使用できます。
インストール
まず、Abp.MailKit パッケージをプロジェクトにインストールします:
Install-Package Abp.MailKit
統合
AbpMailKitModule の依存関係をモジュールに追加します:
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule {//...}
使い方
「いいね!」ができますIEmailSender は、前述したように、Abp.MailKit パッケージによって MailKit 実装が登録されるためです。上記で定義した構成も使用します。
カスタマイズ
MailKit の SmtpClient を作成するとき、追加の構成や独自のカスタマイズが必要な場合があります。この時点で、IMailKitSmtpBuilder インターフェイスの登録を独自の実装に置き換えることができますが、DefaultMailKitSmtpBuilder を継承することでより簡単になります。たとえば、すべての SSL 接続に資格情報を提供したい場合は、次のように ConfigureClient メソッドをオーバーライドします。
public class MyMailKitSmtpBuilder : DefaultMailKitSmtpBuilder{public MyMailKitSmtpBuilder(ISmtpEmailSenderConfiguration smtpEmailSenderConfiguration) : base(smtpEmailSenderConfiguration) { }protected override void ConfigureClient(SmtpClient client) {client.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true; base.ConfigureClient(client); } }
次に、インターフェイスの実装のモジュールの PreInitialize メソッドで IMailKitStmpBuilder を上記の実装に置き換えます。 :
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule {public override void PreInitialize() { Configuration.ReplaceService<IMailKitSmtpBuilder, MyMailKitSmtpBuilder>();}//...}
(ReplaceService の拡張メソッドがこの名前空間で定義されているため、「using Abp.Configuration.Startup;」ステートメントを忘れずに追加してください)。
以上が.net はどのように電子メールを送信しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。