【问题标题】:Sending Email through .NET code通过 .NET 代码发送电子邮件
【发布时间】:2009-11-20 11:20:56
【问题描述】:

我无法向雅虎服务器发送电子邮件,因为我的代码在 C# 2008 中抛出异常为“发送邮件失败”。 请为 yahoo 服务器和 gmail 服务器提供 SMTP HostName、PortName。

还请提供一个良好的工作 C# 代码,我可以使用它直接向任何邮件服务器发送电子邮件。

请提供完整的工作代码...以便我将复制到 Visual Studio 环境中并执行相同的操作。 因为我从早上开始就遇到异常......无法解决问题。 请在这方面帮助我。

【问题讨论】:

  • 你能发布你的代码(没有真实的用户名和密码)
  • 我只使用了下面的代码....但是得到了异常

标签: c# email smtp


【解决方案1】:

对于 Gmail:

var client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential("youraccount@gmail.com", "secret");

var mail = new MailMessage();
mail.From = new MailAddress("youraccount@gmail.com");
mail.To.Add("youraccount@gmail.com");
mail.Subject = "Test mail";
mail.Body = "test body";
client.Send(mail);

雅虎:

var client = new SmtpClient("smtp.mail.yahoo.com", 587);
client.Credentials = new NetworkCredential("youraccount@yahoo.com", "secret");

var mail = new MailMessage();
mail.From = new MailAddress("youraccount@yahoo.com");
mail.To.Add("destaccount@gmail.com");
mail.Subject = "Test mail";
mail.Body = "test body";
client.Send(mail);            

【讨论】:

  • 请在这方面帮助我。非常需要帮助。当我复制了上面相同的代码并在上面的代码中相应地提供了我的凭据并在控制台和 Windows 中执行时......但出现“发送邮件失败”的异常。请帮帮我…………
  • 您是否有可能位于可以阻止端口 587 的防火墙后面?
  • 在发布代码之前,我使用yahoogmail 进行了测试,它工作得非常好,所以可能与您的环境有关。可以发布您获得的整个异常堆栈跟踪吗?
【解决方案2】:

请记住,一些 ISP(包括我的)强制他们的客户使用他们的 SMTP 服务器(作为中继)。垃圾邮件保护是原因。

因此,您应该避免从客户端应用程序向 Internet 发送电子邮件,除非您让用户有机会指定其 SMTP 主机名,或者您的应用程序依赖于用户的电子邮件软件(MAPI,...)。

【讨论】:

    【解决方案3】:

    想象一下,如果您发布了完整的异常消息以及堆栈跟踪,我们为您提供帮助会变得多么容易。

    另外,更进一步,为 System.Net.Mail 启用日志记录,这样我们就可以在网络级别查看任何可能的故障。

    如果您不知道如何为 SNM 启用日志记录,这里有一个链接:

    http://systemnetmail.com/faq/4.10.aspx

    谢谢!

    戴夫

    【讨论】:

      【解决方案4】:

      我们可以通过两种方式发送邮件,

      1)首先使用javascript链接“mailTo”。这不会自动发送邮件,但只会打开邮件窗口。参考下面的代码

         <a class="label" onclick='javascript:buildEmail(this)'>Send Mail</a>
      

      找到下面的js方法

           function buildEmail(el) {
       var emailId = Usermail@gmail.com;
        var subject="Hi";
       var body="Hello";
        el.href = "mailto:" + emailId + "?Subject=" + escape(subject) +
                                                  "&Body=" + escape(body);
      }
      

      2)第二种方式是使用System.Net.Mail,它会自动以安全的方式将邮件发送给收件人。

          string subject="Hello";
             string body="Data"; 
             using ( MailMessage objMail = new MailMessage ( "Yourmail@gmail.com", "Usermail@gmail.com" ) )//From and To address respectively
                      {
                          objMail.IsBodyHtml = false;// Message format is plain text
                          objMail.Priority = MailPriority.High;// Mail Priority = High
                          objMail.Body = "Hello";
                          ArrayList CCarr = new ArrayList();//Assume we add recipients here
      
                         // populate additional recipients if specified
                          if ( ( CCarr != null ) && ( CCarr .Count > 0 ) )
                          {
                              foreach ( string recipient in CCarr )
                              {
                                  if ( recipient != "Please update the email address" )
                                  {
                                      objMail.CC.Add ( new MailAddress ( recipient ) );
                                  }
                              }
                          }
      
                           // Set the subject of the message - and make sure it is CIS Compliant
                              if ( !subject.StartsWith ( "SigabaSecure:" ) )
                              {
                                  subject = "SigabaSecure: " + subject;
                              }   
                        objMail.Subject = subject;
      
                         // setup credentials for the smpthost
                          string username =  "Username";
                          string passwd =     "xxxxxx";
                          string smtpHost =  "mail.bankofamerica.com";
      
                          SmtpClient ss = new SmtpClient ();
                          ss.EnableSsl= true;
                          ss.Host = smtpHost;
                          ss.Credentials = new NetworkCredential ( username, passwd );
                          ss.Send ( objMail );
      }
      

      Sigaba Secure Email 通过使用桌面插件和基于 Web 的身份验证和解密来保护从客户端到客户端的电子邮件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-17
        • 1970-01-01
        • 2010-09-07
        • 2012-07-14
        • 1970-01-01
        相关资源
        最近更新 更多