Member 14183767 Ответов: 1

Отправка электронной почты с именем пользователя путем сравнения электронной почты в базе данных


у меня есть страница , где пользователи входят в систему, а также ссылка на имя пользователя, которая отправляет пользователям их имя Пользователя по электронной почте. Я использую учетную запись outlook, чтобы проверить, какая из них открыта. я сверяю адрес электронной почты с адресом в моей таблице базы данных для пользователей и отправляю электронное письмо пользователю, если этот адрес присутствует в таблице БД. я получаю следующую ошибку '
Цитата:
Исключение типа "System.Net.Mail.SmtpFailedRecipientException" произошло в App_Web_2woqyecp.dll но не был обработан в пользовательском коде
'
Цитата:
Дополнительная информация: почтовый ящик недоступен. Ответ сервера был следующим: 5.7.1 не удалось ретранслировать
и если я использую другой адрес электронной почты не из outlook то письмо не отправляется но я не получаю сообщение об ошибке

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

public void forgot()
    {
        string username = "";

        SqlConnection con = new SqlConnection(strConnString);
        SqlCommand cmd = new SqlCommand(spgetuser, con);
        cmd.Parameters.AddWithValue("@email", txtEmailP.Text);

        con.Open();
        using (SqlDataReader dr = cmd.ExecuteReader())
        {

            if (dr.Read())
            {

                username= dr["username"].ToString();

            }

        }
        con.Close();


        if (!string.IsNullOrEmpty(username))
        {
            try
            {
                string emailFrom = "me@example.com";

                string body = "<div style='border: medium solid grey; width: 500px; height: 266px;font-family: arial,sans-serif; font-size: 17px;'>";
                body += "<h3 margin-top:0px;'>Username Recovery</h3>";
                body += "<br />";
                body += ("Your Username is: " + username);
                body += "<br />";
                body += "<br />";
                body += "Kinds Regards";
                body += "<br />";
                body += "</div>";

                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                //message.To.Add(emailTo);
                //message.Subject = subject;
                message.From = new System.Net.Mail.MailAddress(emailFrom);
                message.IsBodyHtml = true;
                message.Body = body;
                message.Priority = System.Net.Mail.MailPriority.High;
                message.Subject = "username Recovery";

                message.From = new System.Net.Mail.MailAddress(emailFrom);


                SmtpClient SmtpMail = new SmtpClient();
                SmtpMail.EnableSsl = true;
                SmtpMail.Port = 25;
                SmtpMail.Host = "myhost";
               
                System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object s,
                          System.Security.Cryptography.X509Certificates.X509Certificate certificate,
                          System.Security.Cryptography.X509Certificates.X509Chain chain,
                          System.Net.Security.SslPolicyErrors sslPolicyErrors)
                {
                    return true;
                };

                // compare session username to username in database
                SqlCommand command = new SqlCommand(spcheck,con)
                command.Parameters.AddWithValue("@email", txtEmailP.Text);

                using (SqlConnection connection =
                           new SqlConnection(strConnString))
                {

                    connection.Open();

                    command.Connection = connection;

                    SqlDataReader reader = command.ExecuteReader();

                    // Call Read before accessing data.
                    while (reader.Read())
                    {

                        var to = new MailAddress(reader["Email"].ToString());
                        message.To.Add(to);

                    }

                    // Passing values to smtp object        
                    SmtpMail.Send(message);

                    ScriptManager.RegisterStartupScript(this, typeof(string), "Msg","alert('request has been sent');", true);


                    Response.Redirect("~/lgn.aspx");

                    // Call Close when done reading.
                    reader.Close();
                }



            }

                

            catch (Exception ex)
            {
                throw ex;
            }


        }
    }


    protected void Button1_Click(object sender, EventArgs e)
    {

        this.forgot();
    }

F-ES Sitecore

Похоже, ваш smtp-сервер неправильно настроен для отправки электронной почты, которую вы хотите отправить, или настройки, которые вы используете (порт и ssl), неверны для вашего хоста. Мы не знаем, как настроен ваш smtp-сервер, поэтому не можем дать никаких конкретных советов.

Member 14183767

привет , если я использую свой адрес электронной почты(рабочий адрес электронной почты), я могу получить письмо с именем пользователя, но если я попытаюсь использовать другой адрес электронной почты, например из outlook, он не будет работать

Maciej Los

Пожалуйста, используйте виджет "ответить" (справа от Ника /логина), чтобы быть уверенным, что система уведомлений сообщит пользователю о вашем ответе.

Ger Hayden

У Бипина Джоши есть здесь рабочий пример. http://www.binaryintellect.net/articles/df920caf-ba69-4714-938f-fbb358532c0f.aspx которой я следовал для своей собственной работы.

Matias Lopez

Маленький вопрос... App_Web_2woqyecp.dll: это внешняя/внутренняя ссылка? Где/как на него ссылаются?

Member 14183767

Привет , я не уверен, откуда берется эта dll , ее нет в моей папке bin

George Swan

Мой совет, как бы то ни было, не использовать System.Net.Mail, он не поддерживает многие современные протоколы. Пакет NuGet MailKit гораздо менее проблематичен.

1 Ответов

Рейтинг:
0

Gerry Schmitz

Не вычисляет.

//message.To.Add(emailTo);
//message.Subject = subject;


Member 14183767

привет у меня есть этот код
сообщение.Тема = "восстановление имени пользователя";

// Вызов чтения перед доступом к данным.
в то время как (читатель.читать())
{

var to = new MailAddress(reader["Email"].Метод toString());
сообщение.Для.Добавить(к);

}

// Передача значений в объект smtp
SmtpMail.Send(сообщение);