「GmailのSMTPを利用してメール送信する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「Gmailでは「安全性の低いアプリ」云々で「GoogleアカウントのパスワードでのSMTP認証」が廃止されました。 以前はGoogleアカ…」)
 
 
12行目: 12行目:
  
 
<source lang="csharp">
 
<source lang="csharp">
 +
var gmailMailAddress = "";
 +
var gmailAppPassowrd = ""; // これがアプリパスワードに変わった
 +
var fromEmail = gmailMailAddress;
 +
var fromDisplayName = "";
 +
var toEmail = "";
 +
 
var smtpClient = new SmtpClient("smtp.gmail.com")
 
var smtpClient = new SmtpClient("smtp.gmail.com")
 
{
 
{
30行目: 36行目:
 
var mailMessage = new MailMessage
 
var mailMessage = new MailMessage
 
{
 
{
     From = new MailAddress(_fromEmail, _fromDisplayName),
+
     From = new MailAddress(fromEmail, fromDisplayName),
 
     Subject = subject,
 
     Subject = subject,
 
     Body = message
 
     Body = message

2024年5月10日 (金) 04:45時点における最新版

Gmailでは「安全性の低いアプリ」云々で「GoogleアカウントのパスワードでのSMTP認証」が廃止されました。

以前はGoogleアカウントの設定「安全性の低いアプリを許可する」云々というオプションが用意されており、それを有効にすることで再び「GoogleアカウントのパスワードでのSMTP認証」を有効にすることができていましたが、2024年にそれも廃止されました。

代わりに現在は「アプリごとのパスワード」を発行する必要があります。 以下にアプリ名を入力すると「アプリパスワード」が発行されるのでそれをコピペしましょう。

.NET 8.0での実装例[編集 | ソースを編集]

.NET 8.0のSystem.Net.Mail.SmtpClientを使った実装例。 アプリパスワードを利用する以外の変更点はない。

var gmailMailAddress = "";
var gmailAppPassowrd = ""; // これがアプリパスワードに変わった
var fromEmail = gmailMailAddress;
var fromDisplayName = "";
var toEmail = "";

var smtpClient = new SmtpClient("smtp.gmail.com")
{
    // gmailの定番設定
    Port = 587,
    EnableSsl = true,

    // 現在のユーザー資格情報を使用しない。
    // .NETがビッグなお世話をしてくるのを止める。
    UseDefaultCredentials = false,

    // 認証情報
    // パスワードはGmailのパスワードではなく以下で生成したアプリパスワードです。
    // https://myaccount.google.com/apppasswords
    Credentials = new NetworkCredential(gmailMailAddress, gmailAppPassowrd),
};

var mailMessage = new MailMessage
{
    From = new MailAddress(fromEmail, fromDisplayName),
    Subject = subject,
    Body = message
};
mailMessage.IsBodyHtml = false;
mailMessage.To.Add(toEmail);

// 送信
await smtpClient.SendMailAsync(mailMessage);