Gmailのsmtpを利用して送ったメールが届かなくなった

投稿者: Anonymous

Visual Studio 2013のC#でAPIを開発しております。

パスワードを忘れた場合、サーバでパスワードを生成し、メールに送るようにしています。
そのためグーグルで提供している「smtp.gmail.com」を利用してメールを送っていますが、
メールが来ません。
特にエラーは発生していないのにメールが来なくて、原因も心当たりもない状態です。
最初から来なかったのではなく、最初はちゃんとメールが来たのに、次の日に試した時からずっとメールの発送はできるけどメールが来ない状態です。何が原因なのか教えていただきたいです。

string sendEMail(ResetPasswordRequestModels model, string newPassword)
{
        string senderName = "tester";
        string senderID = "********@gmail.com";
        string receiveID = model.EmailAddress;

        string msgTitle = "test";
        string msgContent = "新しいパスワードは「" + newPassword + "」で御座います。";

        //メールコンテンツ設定 (発送者、受信者、メールタイトル、メール内容など)
        MailMessage message = new MailMessage();
        message.From = new MailAddress(senderID, senderName); //new MailAddress(発送者メールアドレス、発送者名)設定時 : メールアドレスの代わり発送者名が表示される(発送者名はオプション)
        message.To.Add(new MailAddress(receiveID));
        message.Subject = msgTitle;
        message.Body = msgContent;
        message.SubjectEncoding = System.Text.Encoding.UTF8;  
        message.BodyEncoding = System.Text.Encoding.UTF8;    
        message.IsBodyHtml = true;  

        //SMTP設定
        SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new NetworkCredential(senderID, "********");
        smtpClient.EnableSsl = true;
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

        try
        {
            //メール発送
            smtpClient.Send(message);
        }
        catch(Exception e)
        {
            return "失敗 " + e.Message;
        }

        return "";
 }

解決

Googleアカウントで二段階認証を有効にされていますか?
その場合、安全性の低いアプリからの Google アカウントへのアクセスを許可する必要があります。

ご自身のGmailにGoogleから「不審なアクティビティがあり遮断した」ような内容のメールが届いていると推測されます。(take88さんもコメントで指摘)

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *