Ошибка отправки клиента SMTP в приложении C # - PullRequest
3 голосов
/ 27 марта 2011

Эй, ребята, я пытаюсь настроить приложение для отправки электронной почты, используя учетную запись hotmail.Код выглядит следующим образом:

MailMessage mail = new MailMessage(from, to);
        mail.Subject = "Proba email";
        mail.Attachments.Add(new Attachment("C:\\Documents and Settings\\Proba.txt"));
        SmtpClient client = new SmtpClient();
        client.UseDefaultCredentials = false;
        client.Port = 587; // 465 568
        client.Host = "smtp.live.com";
        client.EnableSsl = true;
        client.Credentials = new System.Net.NetworkCredential("smg@hotmail.com", "password");
        client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
        client.SendAsync(mail, "token");

Используя Async, я на самом деле не получаю никаких ошибок, я даже получаю отзыв о отправленном сообщении (триггеры событий), но сообщение так и не приходит.Если я использую простой клиент. Отправка void, я получаю следующую ошибку:

5.3.4 Запрошенное действие не выполнено;Чтобы продолжить отправку сообщений, войдите в свою учетную запись.

Итак, есть какие-либо идеи о том, в чем может быть проблема?Когда я пытался передать настройки SMTP горячей почты, я получил различные настройки, например, порт 25, а затем 587, так что, возможно, это что-то есть.Любая помощь будет принята с благодарностью, спасибо!

  • Хорошо, теперь она определенно работает, я просто хотела бы спросить, придется ли мне делать регулярные проверки "Я не робот" или это былоодноразовая вещь?

Ответы [ 3 ]

5 голосов
/ 28 марта 2011

Вот мои настройки, BTW async не вернет никаких ошибок.

<system.net>
<mailSettings>
  <!-- E-mail server settings -->
  <smtp from="do-not-reply@example.com">
    <network host="smtp.example.com" port="25" userName="" password="" defaultCredentials="true" />
  </smtp>
</mailSettings>

    void SendEmail(EmailEntity email)
    {
        var mailMessage = new MailMessage { From = new MailAddress(email.From) };
        mailMessage.To.Add(new MailAddress(email.To));
        mailMessage.Subject = email.Subject;
        mailMessage.Body = email.Body;
        mailMessage.IsBodyHtml = true;

        // Send the email
        var client = new SmtpClient();
        client.Send(mailMessage);
    }
2 голосов
/ 27 марта 2011

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

 client.DeliveryMethod = SmtpDeliveryMethod.Network;

как раз перед client.Send();. Не уверен, что это поможет решить вашу проблему. У вас есть настройки Outlook с тем же сервером и учетными данными?

0 голосов
/ 28 марта 2011
SmtpClient smtpClient = new SmtpClient();
        MailMessage message = new MailMessage();

        try
        {
           // System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
            MailAddress fromAddress = new MailAddress(txt_name.Text, txt_to.Text);


            smtpClient.Host = "smtp.gmail.com";


            smtpClient.Port = 25;

           // msg.From = new System.Net.Mail.MailAddress("xyz@gmail.com");

          message.From = fromAddress;

            message.To.Add("xyz111@gmail.com");


            message.Body = txt_des.Text;
            smtpClient.EnableSsl = true;

            System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();

            NetworkCred.UserName = "xyz@gmail.com";

            NetworkCred.Password = "xtz";

            smtpClient.UseDefaultCredentials = true;

            smtpClient.Credentials = NetworkCred; 


            smtpClient.Send(message);

            lblStatus.Text = "Email successfully sent.";
        }
        catch (Exception ex)
        {
            lblStatus.Text = "Send Email Failed." + ex.Message;
        }
...