C# email tidak terkirim SMTP

Saya mencoba mengirim email secara terprogram dalam C# tetapi saya tidak menemukan apa yang saya lewatkan. Ini kode yang sama

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;
        } 

Saya telah mencoba melihat nilai di dalam variabel hasil yang memiliki dua nilai

  1. Kode status smtp Kegagalan Umum
  2. Operasi telah habis waktunya// Jika kita mengomentari kode catch (SmtpException e)

Jika saya mencari situs web msdn untuk kode status SMTP "Kegagalan umum" interpretasi kode status smtp kita akan menemukan bahwa kode status berarti host tidak dapat ditemukan dan saya mencoba melakukan nslookup dan host "smtp.gmail.com" tersedia dan dapat diakses dari telnet.

Apa yang saya lewatkan dalam program ini?


person Prashant Bhanarkar    schedule 26.08.2016    source sumber
comment
Terkait Kirim email melalui SMTP menggunakan C#   -  person Mehdi Dehghani    schedule 26.08.2016


Jawaban (2)


Berikut adalah kode untuk mengirim email secara terprogram menggunakan c#. itu berfungsi dengan baik di mesin saya.

    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
Jika kami menemukan pengecualian untuk Anda, kami mendapatkan Upaya koneksi gagal karena pihak yang terhubung tidak merespons dengan benar setelah jangka waktu tertentu, atau koneksi yang terjalin gagal karena host yang terhubung gagal merespons. - person Prashant Bhanarkar; 26.08.2016
comment
saya kira Anda perlu mengubah pengaturan di akun Gmail Anda. - person JeetDaloneboy; 26.08.2016
comment
Saya telah mengaktifkan pengaturan aplikasi yang kurang aman di gmail saya namun tetap tidak membantu - person Prashant Bhanarkar; 26.08.2016
comment
baik kode Anda berfungsi dengan baik di mesin saya. - person JeetDaloneboy; 26.08.2016
comment
@PrashantBhanarkar hapus kode verifikasi kedua di akun gmail Anda dan periksa nama pengguna dan kata sandi yang diberikan apakah benar?. referensi : c-sharpcorner.com/blogs/ - person Rajeesh Menoth; 30.08.2016

Ini kode saya, Anda dapat mencobanya.

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