よくある話題ですが、たまたまちょっと、ちょっとしたメール送信処理が必要で、いつものように適当なWindowsフォームアプリケーションで作ってみたというものです。
【まとめ】
・アプリなどからGmailの送信をするには、アプリパスワードが必要
・アプリパスワードの利用には2段階認証を有効にする必要がある
それぞれ設定はこちらから→ログインとセキュリティ
・サンプルのソースコードは以下を参照
#サンプルコード
using System.Net.Mail;
:
private string mailID;
private string mailPassword;
private string mailFrom;
private string mailTo
private string mailSubject;
private string mailBodyt
:
private void SendMail()
{
try
{
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential(mailID, mailPassword);
smtp.EnableSsl = true;
MailMessage msg = new MailMessage(mailFrom, mailTo, mailSubject, mailBody);
smtp.Send(msg);
MessageBox.Show($"{mailTo} にメール送信しました。");
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
#参考まで、事の経緯
何かサンプルコードを探す
たまたま見つかった次の記事を参考にしました。
c#でgmailを利用してメールを送るだけのプログラム - 39Si
しかし、これでは次のエラーとなります。
SMTP サーバーにセキュリティで保護された接続が必要であるか、またはクライアントが認証されていません。 サーバーの応答:5.5.1 Authentication Required. Learn more at
アプリパスワードが必要とわかる
ちょっと調べてみると、現在はアプリパスワードなるものが必要とのこと。
次の記事を参考:C# - GMail送信について(70064)|teratail
では、アプリパスワードについて調べてみると次のヘルプが。
アプリ パスワードでログイン - Google アカウント ヘルプ
しかし今度は、次のメッセージが
お探しの設定はお使いのアカウントでは利用できません。
アプリパスワードの発行は2段階認証が必要とわかる
どうやら、2段階認証を有効にしていないと発行できないようですね。
なので、2段階認証を設定して、アプリパスワードを設定すれば、無事メール送信できるようになります。
2段階認証やアプリパスワードの設定は次のページから。
ログインとセキュリティ
後は画面の指示通りに進めば簡単な内容でした。
以上