【问题标题】:C# Send E-Mail issueC# 发送电子邮件问题
【发布时间】:2013-04-05 20:13:24
【问题描述】:

我正在尝试使用 C# 发送电子邮件,但遇到了一些问题。每当我尝试发送电子邮件时,都会收到一条消息“错误:发送邮件失败”。 这是我的代码:

    try
        {
            client.Host = "smtp.gmail.com";
            client.Port = 465;
            client.UseDefaultCredentials = false;
            client.Credentials = smtpCreds;
            client.EnableSsl = true;

            MailAddress sendFrom = new MailAddress("from@domain.com");
            MailAddress sendTo = new MailAddress("to@domain.com");
            MailMessage msg = new MailMessage(sendFrom,sendTo);
            msg.Subject = "Subject";
            msg.Body = "Body";
            client.Send(msg);
        }
        catch (Exception e)
        {
            MessageBox.Show("Error:" + e.Message);
        }

我也有这个声明:

    public SmtpClient client = new SmtpClient();
    public System.Net.NetworkCredential smtpCreds = new System.Net.NetworkCredential("mail", "password");

希望你能帮助我。

【问题讨论】:

  • 你试过Port = 587
  • @Sachin 我有。还是不行
  • InnerExceptoin吗?
  • @Michael Perrenoud 捕获的唯一异常是当我尝试发送邮件时。就是这样
  • @Stormel,Exception 类具有 InnerException 属性。那个属性是null 吗?你必须在这里设置断点MessageBox.Show("Error:" + e.Message);

标签: c# email send


【解决方案1】:

试试这个代码

        using System.Net.Mail;

        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
        mail.From = new MailAddress("sender@gmail.com");
        mail.To.Add("reciever@gmail.com");
        mail.Subject = ("e mail subject");
       mail.Body = ("message body");
        SmtpServer.Port = 587;
        SmtpServer.Credentials = new System.Net.NetworkCredential("sender's username",            "sender's password");
        SmtpServer.EnableSsl = true;
        SmtpServer.Send(mail);
        MessageBox.Show("mail Send");

【讨论】:

  • 你检查你的网络连接了吗?
  • 我的互联网连接没有任何问题。我也尝试过通过不同的互联网提供商进行连接。同样的问题
【解决方案2】:

您可以试试这个,并确保您使用的是有效的登录凭据并且您有互联网连接:

 MailMessage mail = new MailMessage();
 mail.Subject = "Your Subject";
 mail.From = new MailAddress("senderMailAddress");
 mail.To.Add("ReceiverMailAddress");
 mail.Body = "Hello! your mail content goes here...";
 mail.IsBodyHtml = true;

 SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
 smtp.EnableSsl = true;
 NetworkCredential netCre = new NetworkCredential("SenderMailAddress","SenderPassword" );
 smtp.Credentials = netCre;

 try
  {
   smtp.Send(mail);                
  }
  catch (Exception ex)
  {               
  }

【讨论】:

  • 检查您的用户名和密码,并在catch块处设置断点
  • 用户名和密码都可以。我确实在 catch 块上放了一个断点,它就停在那里。由于某种原因,它只是不会发送电子邮件
  • 可以检查异常
  • 你的代码对我有用,但我有一个问题,发件人邮件总是等于我的 NetworkCredentialMail ,谁能告诉我哪里出了问题,我怎样才能得到发件人地址
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多