gcogco10 Ответов: 2

Smtp-сервер требует безопасного подключения или клиент не прошел проверку подлинности. Ответ сервера был 5.7.0 требуется аутентификация?


Привет Друзья

Я не могу зарегистрировать новых пользователей, поэтому моя отправка(mailMessage) не позволяет этому произойти. В чем может быть проблема? Я выполнил все шаги из домена gmail, чтобы настроить это, и я ожидаю, что мое веб-приложение будет работать. Пожалуйста, помогите мне товарищи, вот мой класс контроллера регистра, чтобы сделать это.

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

<pre>  [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser() { UserName = model.UserName };
                user.Email = model.Email;
                user.ConfirmedEmail = false;
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(
                        new System.Net.Mail.MailAddress("mandelacampus@gmail.com", "Web Registration"),
                        new System.Net.Mail.MailAddress(user.Email));
                    m.Subject = "Email confirmation";
                    m.Body = string.Format("Dear {0}<BR/>Thank you for your registration, please click on the below link to complete your registration: <a href=\"{1}\" title=\"User Email Confirm\">{1}</a>", user.UserName, Url.Action("ConfirmEmail", "Account", new { Token = user.Id, Email = user.Email }, Request.Url.Scheme));
                    m.IsBodyHtml = true;
                    
                    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
                    smtp.Credentials = new System.Net.NetworkCredential("ggcobani@gmail.com", "password");
                    smtp.EnableSsl = true;
                    smtp.UseDefaultCredentials = false;
                    smtp.Port = 587;
                    smtp.Host = "smtp.gmail.com";
                    smtp.Send(m);
                    return RedirectToAction("Confirm", "Account", new { Email = user.Email });
                }
                else
                {
                    AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form  478216
            return View(model);
        }

2 Ответов

Рейтинг:
1

gcogco10

@Richard, я только что перепроверил Настройки учетной записи Google, она была установлена для securelessapp, включая пароль. Мой вопрос заключается в том, должен ли я использовать те же учетные данные при регистрации новых пользователей в моем веб-приложении?

Richard MacCutchan

Полагаю, да. Однако для того, чтобы сделать это правильно, вы должны прекратить использовать SmtpClient и использовать правильную аутентификацию Google. В качестве альтернативы используйте другого поставщика электронной почты (и определенно другое имя пользователя) для процесса регистрации.

gcogco10

Ричард Маккутан, пожалуйста, дайте мне пример по умолчанию, который наверняка можно обойти.

Richard MacCutchan

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

gcogco10

До сих пор я пытаюсь использовать этот провайдер Outlook. Я получаю ошибку Microsoft;
Клиент не был аутентифицирован для отправки анонимной почты во время отправки почты из [CT2P275CA0035.ZAFP275.PROD.OUTLOOK.COM]

Richard MacCutchan

"Клиент не был аутентифицирован для отправки анонимной почты"
Пожалуйста, обратите больше внимания на сообщения, которые вы получаете. Это не ошибки программирования - вам нужно проверить правила поставщиков электронной почты.

gcogco10

https://serversmtp.com/pop-and-smtp/

Рейтинг:
0

F-ES Sitecore

smtp.Credentials = new System.Net.NetworkCredential("ggcobani@gmail.com", "password");
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;


Установка UseDefaultCredentials в false очищает все учетные данные, которые вы ранее установили, поэтому замените эти операторы

smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("ggcobani@gmail.com", "password");
smtp.EnableSsl = true;


Отправка электронной почты через gmail, вероятно, является одним из наиболее часто задаваемых вопросов. Существует бесчисленное множество примеров кода и руководств по устранению неполадок, и независимо от того, какая у вас проблема, вы найдете решение, погуглив его.


gcogco10

@F-ES сайт я бы пошел на этот форум, если бы не был google этот вопрос, и все же я поднял этот вопрос также в stackoverflow. Я попробовал эти шаги, но все равно даже настроил свою безопасность gmail, чтобы позволить приложениям безопасно быть включенными. Какая еще может быть проблема?

F-ES Sitecore

Все в gmail привязано к адресу "от". Учетная запись gmail, которую вы используете в адресе from, - это та, которую вам нужно настроить, чтобы разрешить доступ, и это учетная запись, учетные данные которой вы используете на SmtpClient. Вы не можете отправить сообщение "из" другого аккаунта через gmail. Как я уже говорил вам, лучше всего использовать smtp-сервер, предоставляемый вашей сетью, а не использовать gmail для отправки электронной почты

https://forums.asp.net/post/5825785.aspx

gcogco10

Привет, сайт F-ES, теперь ты поднимаешь что-то новое. То, что у меня есть опыт и проверено на основе этого блога, который вы мне прислали. Если я использую outlook, я все еще получаю аналогичную ошибку, но теперь это "клиент не был аутентифицирован для отправки анонимной почты во время почты из [CT2P275CA0042.ZAFP275.PROD.OUTLOOK.COM]

F-ES Sitecore

Решение одно и то же ... вы должны выяснить, какие настройки нужны используемому вами smtp-серверу, и соответствующим образом адаптировать свой код.