0

ここで私は奇妙な状況にいます。localhost から電子メールを送信すると正常に動作しますが、ページをサーバーにアップロードして電子メールを送信しようとすると、次のエラーが表示されます。

SMTP サーバーが安全な接続を必要としているか、クライアントが認証されていません。サーバーの応答は次のとおりでした: 5.5.1 認証が必要です

テスト目的でラベルにエラーメッセージを表示していますが、tryも間違っています。後で設定します。

私が使用しているコードは

 if (Page.IsValid)
    {
try
            {
            StringBuilder message = new StringBuilder();
            message.Append("Hello My Name is ");
            message.Append(txtName.Text);
            message.AppendLine();
            message.AppendLine("My Contact Number " + txtContactNumber.Text.ToString());
            message.AppendLine();
            message.AppendLine();
            message.AppendLine("My Email Id Is " + txtFromEmailAddress.Text.ToString());
            message.AppendLine();
            message.Append(txtEmailBody.Text);


        MailMessage mailMessage = new MailMessage("xxx@gmail.com", "yyy@gmail.com");
        mailMessage.Subject = "New Client Query";
        mailMessage.Body = message.ToString();

        SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 25);
        //smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential()
        {
            UserName = "xxx@gmail.com",
            Password = "password"
        };
        smtpClient.EnableSsl = true;

            smtpClient.Send(mailMessage);


        txtContactNumber.Text = "";
        txtFromEmailAddress.Text = "";
        txtName.Text = "";
        txtEmailBody.Text = "";
        lblEmailStatus.Text = "Email Sent Successfully.";
        lblEmailStatus.ForeColor = System.Drawing.Color.Yellow; 
        }
        catch(Exception ex)
        {
            lblEmailStatus.Text = ex.Message + " <br> " + ex.Source;
        }
    }
    else
    {

        lblEmailStatus.Text = "Error!   Email Not Sent ";
        lblEmailStatus.ForeColor = System.Drawing.Color.Yellow;
    }

数時間グーグルで検索し、このサイトのリンクもチェックしましたが、まだわかりません.

解決策/ヒントがあれば、ここで皆さんにお願いします。

4

3 に答える 3

1

これを試して

    public string SendEmailTest(String EmailMessage, String FromMail, String MailPassword, String MailServer, String To, String CC, String BCC, String DisplayName, String Subject, String Attachment)
    {
        try
        {
            SmtpClient smtpClient = new SmtpClient();

            MailMessage message = new MailMessage();

            MailAddress fromAddress;

            fromAddress = new MailAddress(FromMail);

            smtpClient.Host = MailServer;
            smtpClient.Port = 25;

            System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(FromMail, MailPassword);
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Credentials = SMTPUserInfo;

            message.From = fromAddress;

            message.To.Add(new MailAddress(To, DisplayName));
            if (CC != "")
                message.CC.Add(new MailAddress(CC, DisplayName));
            if (BCC != "")
                message.Bcc.Add(new MailAddress(BCC, DisplayName));

            message.Subject = Subject;

            message.IsBodyHtml = true;
            message.Body = EmailMessage;

            if (Attachment != "")
                message.Attachments.Add(new Attachment(Attachment));

            message.Priority = MailPriority.High;

            smtpClient.Send(message);
            return "SendEmail";
        }
        catch (Exception ex)
        {
            return "Email :" + ex;
        }

    }
于 2013-10-03T11:04:11.357 に答える
1

やっと理由がわかりました。

私がメールを送信していたメールは、数日前にハッキングされたもので、セキュリティ上の理由から、Google チームは私のメールを安全でないとマークしていました。メールアドレスを変更しましたが、問題なく動作しています。ありがとうございます。

于 2014-01-30T20:42:07.263 に答える
0

Google Gmail のドキュメントに基づくと、ポートは 25 ではなく 587 である必要があるようです。ここここに関連していると思われる他のいくつかの質問を見つけました。

SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
client.UseDefaultCredentials = false;
于 2013-10-03T10:56:41.520 に答える