Электронная почта С# не отправляется SMTP

Я пытаюсь отправить электронную почту программно на С#, но я не нахожу, чего мне не хватает. Вот код для того же

string SendEmail(string toAddress, string subject, string body, string senderID)
        {
            string result = "Message Sent Successfully..!!";
            const string senderPassword = "mypassword";
            try
            {
                SmtpClient smtp = new SmtpClient
                {
                    Host = "smtp.gmail.com",
                    Port = 587,
                    EnableSsl = true,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    Credentials = new System.Net.NetworkCredential(senderID, senderPassword),
                    Timeout = 30000,
                };
                MailMessage message = new MailMessage(senderID, toAddress, subject, body);
                smtp.Send(message);
            }
            catch (SmtpException e)
            {
                result = "Smtp status code " + e.StatusCode;
            }
            catch (Exception ex)
            {
                result ="Error sending email " +ex.ToString();
            }
            return result;
        } 

Я попытался увидеть значение внутри переменной результата, оно имеет два значения

  1. Код состояния smtp Общий сбой
  2. Срок действия операции истек // Если мы прокомментируем код catch (SmtpException e)

Если я посмотрю на веб-сайте msdn код состояния SMTP «Общая ошибка» интерпретация кода состояния smtp мы обнаружим, что код состояния означает, что хост не может быть найден, и я попытался выполнить nslookup, а хост "smtp.gmail.com" доступен и доступен из телнета.

Чего мне не хватает в программе?


person Prashant Bhanarkar    schedule 26.08.2016    source источник
comment
Связанная Отправка электронной почты через SMTP с использованием C#   -  person Mehdi Dehghani    schedule 26.08.2016


Ответы (2)


Вот код для программной отправки почты с использованием С#. он отлично работает на моей машине.

    try
    {
        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

        mail.From = new MailAddress("email");
        mail.To.Add("email");
        mail.Subject = "Subject";
        mail.Body = "Message";
        SmtpServer.Port = 587;
        SmtpServer.Credentials = new System.Net.NetworkCredential("email", "password");
        SmtpServer.EnableSsl = true;

        SmtpServer.Send(mail);
        return true;
    }
    catch (Exception ex)
    {
        return "false";
    }
person JeetDaloneboy    schedule 26.08.2016
comment
Если мы поймаем ваше исключение, мы получим Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или установленное соединение не удалось, потому что подключенный хост не ответил. - person Prashant Bhanarkar; 26.08.2016
comment
я думаю, вам нужно изменить настройки в вашей учетной записи gmail. - person JeetDaloneboy; 26.08.2016
comment
Я включил настройку менее безопасного приложения в своем gmail, но это не помогло - person Prashant Bhanarkar; 26.08.2016
comment
хорошо, ваш код отлично работает на моей машине. - person JeetDaloneboy; 26.08.2016
comment
@PrashantBhanarkar удалите второй проверочный код в своей учетной записи gmail и проверьте правильность имени пользователя и пароля? ссылка: c-sharpcorner.com/blogs/ - person Rajeesh Menoth; 30.08.2016

Вот мой код, можете попробовать.

public static bool SendEmail(string subject, MailAddress from, List<string> to,List<string> cc, string body, Attachment attachment)
{
    try
    {

        MailMessage mail = new MailMessage();
        mail.Subject = subject;
        mail.From = from;
        foreach (var item in to)
            mail.To.Add(item);
        foreach (var item in cc)
            mail.CC.Add(item);
        mail.IsBodyHtml = true;
        mail.Body = body;
        if (attachment != null)
            mail.Attachments.Add(attachment);

        SmtpClient mailClient = new SmtpClient();
        mailClient.Port = 587;//maybe 25
        mailClient.Host = "smtp.gmail.com";
        mailClient.EnableSsl = true;
        mailClient.Credentials = new NetworkCredential("EmailAddress", "EmailPassword");
        //mailClient.Credentials = new NetworkCredential("[email protected]", "1234");


        try
        {
            mailClient.Send(mail);
        }
        catch (Exception ex)
        {
            return false;
        }

        return true;
    }
    catch { return false; }
}
person Ömer Bodur    schedule 26.08.2016