Barthinia Ответов: 1

SMTP - сервер требует безопасного подключения или клиент не прошел проверку подлинности


Привет я столкнулся со следующей проблемой
The SMTP server requires a secure connection or the client was not authenticated
хотя я делаю низкую секретность в аккаунте Google
Имя пользователя и пароль верны, но invain, когда я размещаю приложение на Somee.com сервер пожалуйста подтолкните вас помогите пожалуйста

Что я уже пробовал:

protected void btPassRec_Click(object sender, EventArgs e)
       {
           BusinessObject_Layer.BO_Layer objbo = new BusinessObject_Layer.BO_Layer();
           objbo.Email = tbEmailId.Text;
           DataTable dt = BSS.SelectEmailAddress(objbo);
           if (dt.Rows.Count != 0)
           {
               String myGUID = Guid.NewGuid().ToString();
               int Uid = Convert.ToInt32(dt.Rows[0][0]);
               BusinessObject_Layer.BO_Layer objbos = new BusinessObject_Layer.BO_Layer();
               objbos.GUIDID = Guid.Parse(myGUID.ToString());
               objbos.UID = Uid;
               BSS.InsertForgottenPassowrd(objbos);

               //send email
               String ToEmailAddress = dt.Rows[0][3].ToString();
               String Username = dt.Rows[0][1].ToString();
               String EmailBody = "Hi " + Username + ",<br/><br/> Click the link below to reset your password <br/><br/> http://localhost:60219/Reset_PassU.aspx?Uid=" + myGUID;
               MailMessage PassRecMail = new MailMessage("<removed>", ToEmailAddress);
               PassRecMail.Body = EmailBody;
               PassRecMail.IsBodyHtml = true;
               PassRecMail.Subject = "Reset Password";



               SmtpClient SMTP = new SmtpClient("smtp.gmail.com", 587);
               SMTP.Credentials = new NetworkCredential()
               {
                   UserName = "<removed>",
                   Password = "p@ssw0rd-r3m0v3d"
               };
               SMTP.EnableSsl = true;

               SMTP.Send(PassRecMail);
               SMTP.UseDefaultCredentials = false;
               lblPassRec.Text = "Check your email to reset your password.";
               lblPassRec.ForeColor = Color.Green;

           }
           else
           {
               lblPassRec.Text = "OOps This email id DOES NOT exist in our database !";
               lblPassRec.ForeColor = Color.Red;
           }

Afzaal Ahmad Zeeshan

Не могли бы вы сначала попробовать с портом 25?

1 Ответов

Рейтинг:
2

F-ES Sitecore

Google для того, чтобы отправить электронную почту через gmail, это очень хорошо документировано, и каждая проблема, с которой вы столкнетесь (а их будет много), уже была решена. Одна из проблем, которую я вижу, заключается в том, что вы установили UseDefaultCredentials в false после предоставления учетных данных. Я знаю, что это звучит странно, но класс SmtpClient не очень хорошо написан :) вам нужно установить UseDefaultCredentials в false перед установкой самих учетных данных (вы также устанавливаете его после вызова .Send).

SMTP.UseDefaultCredentials = false;
SMTP.Credentials = new NetworkCredential()
{
    UserName = "<removed>",
    Password = "p@ssw0rd-r3m0v3d"
};
SMTP.EnableSsl = true;

SMTP.Send(PassRecMail);


Вполне могут возникнуть и другие проблемы, например, вам нужно настроить свою учетную запись gmail, чтобы люди могли отправлять сообщения программно, вы можете использовать другой адрес "от" для предоставленных вами учетных данных. Как бы то ни было, отправка через gmail-это невероятно часто задаваемый вопрос, поэтому просто google для получения необходимого кода и конфигурации.

Мой совет, однако, состоит в том, чтобы просто не отправлять через gmail вообще, а отправлять через SMTP-сервер вашего веб-хоста, а для локального тестирования использовать SMTP-сервер вашей сети или использовать что-то вроде smtp4dev.