Ошибка при отправке электронного письма с System.Net.Mail.Что искать при отладке? - PullRequest
0 голосов
/ 09 сентября 2011

Вот код, который я запускаю:

try
{
    var fromAddress = new MailAddress("foo@ree.com", "foo");
    var toAddress = new MailAddress("test@gmail.com", String.Empty);
    const string fromPassword = "password";
    const string subject = "Welcome!";
    const string body = "This is a test message!";

    var smtp = new SmtpClient
    {
        Host = "mail.foo.com",
        Port = 143,
        EnableSsl = false,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
    };
    using (var message = new MailMessage(fromAddress, toAddress)
                                        {
                                            Subject = subject,
                                            Body = body
                                        })
    {
        smtp.Send(message);
    }
}
catch (Exception e)
{
    Debug.WriteLine(e.InnerException.ToString());
    //Add logging here.
}

Когда я пытаюсь запустить smtp.Send(message), выдается следующая ошибка:

A first chance exception of type 'System.Net.Mail.SmtpException' occurred in System.dll
    System.FormatException: Smtp server returned an invalid response.
    at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read,  Boolean readLine)
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
    at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
    at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)

Каковы возможные причины этогоошибка?Что я должен искать?

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

Вы уверены, что ваш SMTP-порт 143? По умолчанию установлено значение 25. Похоже, что сначала он не может правильно общаться с сервером (так как ошибка в GetConnection).

0 голосов
/ 04 октября 2016
try
{
    MailMessage mail = new MailMessage();
    mail.To.Add("yourid@gmail.com");
    mail.CC.Add("ccid@hotmail.com");
    mail.From = new MailAddress("from@gmail.com");
    mail.Subject = "Feedback for Website";
    string Body = "Name:"+TextBoxName.Text+" Phone Number: "+TextPhone.Text;
    mail.Body = Body;
    mail.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.EnableSsl = true;
    smtp.Credentials = new System.Net.NetworkCredential("your@gmail.com", "pass");
    smtp.Send(mail);
    lblStatus.Text = "Message send successfully.";
    txtMessage.Text = "";
}
catch (Exception ex)
{
    lblStatus.Text = ex.ToString();
}
0 голосов
/ 07 августа 2014

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

пожалуйста, подождите несколько минут, затем отправьте письмо из скрипта снова. Ниже приведены инструкции по утверждению «Уведомлений о необычной активности» из центра безопасности gmail.

a) перейдите в центр безопасности gmail по этой ссылке или поищите в Google «gmail security» и войдите в свою учетную запись gmail. https://accounts.google.com/ServiceLogin?elo=1

b) рядом с «безопасность» / «Недавние действия», нажмите «просмотреть все события»

в) Вы сможете увидеть «Необычное действие», оно покажет все необычные события активности, выбрать связанное событие и подтвердить его, нажав «Да, это был я!»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...