c#邮件没有发送SMTP

本文关键字:SMTP | 更新日期: 2023-09-27 18:04:00

我正试图以c#编程方式发送电子邮件,但我找不到我错过的东西。下面是相同的

的代码
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"是可用的,可以从telnet访问。

程序中缺少什么?

c#邮件没有发送SMTP

下面是使用c#编程发送邮件的代码。它在我的机器上运行良好。

    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";
    }
   MailMessage mail = new MailMessage();
   mail.From = new MailAddress("frommail", "fromText");
   mail.To.Add(toEMailId);
   mail.Subject = "TestSubject";
   mail.IsBodyHtml = true;
   mail.BodyEncoding = System.Text.Encoding.UTF8;
   mail.Body = "Test mailBody";
   //SMTPServer
   SmtpClient SmtpServer = new SmtpClient("yourSMTPServer");
   //SMTPPort
   SmtpServer.Port = Convert.ToInt32("PostNumber");
   SmtpServer.UseDefaultCredentials = false;
   //Set SMTP Username and Password
   SmtpServer.Credentials = new             System.Net.NetworkCredential("SMTPUserName","SMTPPassword");
  //EnableSSL
  SmtpServer.EnableSsl = false;
  SmtpServer.Send(mail);

这是我的代码,你可以试试。

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("a@gmail.com", "1234");

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