web-dev-qa-db-ja.com

ASPコア2.1メール確認

ASP = Razorクラスライブラリを使用したコア2.1プロジェクト。

これに関して何か提案はありますか?この点でIdentityUserを使用する方法?最初にアイデンティティを足場する必要がありますか?この点について、専門家の助けが必要かどうか確認してください。

3

SendGridおよびその他のサービスは、適切にスケーリングするように設定されており、一度に数百万の電子メールの送信を処理できるため、本番環境での使用をお勧めします。

ただし、アプリをdevで実行するときにSMTPメールをセットアップするのは良いことです。

したがって、ほとんどの場合、メール確認の設定について the docs をたどることができます。変更する必要があるのは、SMTPサーバーを使用するためのEmailSenderの実装です。

using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.UI.Services;

namespace YourApp
{
    public class DevEmailSender : IEmailSender
    {
        public Task SendEmailAsync(string email, string subject, string htmlMessage)
        {
            var client = new SmtpClient("yoursmtpserver") {
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential("yourusername", "yourpassword")
            };
            var mailMessage = new MailMessage {
                From = new MailAddress("[email protected]")
            };
            mailMessage.To.Add(email);
            mailMessage.Subject = subject;
            mailMessage.Body = htmlMessage;
            return client.SendMailAsync(mailMessage);
        }
    }
}

次に、これをStartup.csConfigureServicesのサービスとして構成する必要があります。

services.AddTransient<IEmailSender, DevEmailSender>();

SMTPサーバーの設定はここでは範囲外ですが、たとえばgmailがある場合は、その方法について このブログ投稿 をたどることができます。繰り返しますが、これは運用戦略ではなく、実際にGmailアカウントをセキュリティの脆弱性にさらすことに注意してください。設定すると、Googleがセキュリティの脆弱性を強調します。ただし、使い捨てアカウントを使用している場合、これはASP.NET Core Identityで電子メールの確認を取得するための迅速で汚れたソリューションになる可能性があります。

3
tura08

@marcusturewiczによる上記のサンプルコードをgmail SMTPで使用する場合は、ポート番号(587)を追加し、次に示すように、EnableSslをtureに設定します。

 var client = new SmtpClient("smtp.gmail.com",587)
        {
            UseDefaultCredentials = false,
            EnableSsl=true,
            Credentials = new NetworkCredential(userName, password)
        };
2
yibe

fakeSMTP と呼ばれる、電子メールを送信するための開発目的に使用できる単純な開発SMTPサーバーがあります。

0
ebsk