【问题标题】:C# code for sending an email without knowing much about the server configuration?在不了解服务器配置的情况下发送电子邮件的 C# 代码?
【发布时间】:2010-10-02 13:36:45
【问题描述】:

有没有办法在 C# 代码中发送电子邮件而无需知道服务器上的 SMTP 服务器配置等,或者设置任何这些东西?

我正在开发的代码将部署到实时服务器,但我对配置一无所知,所以我无法预测 SMTP 服务器会是什么。

【问题讨论】:

    标签: c# email configuration smtp


    【解决方案1】:

    是的,您可以使用 SMTP4Dev 之类的工具来“发送”电子邮件,而根本不需要 SMTP 服务器。我经常使用它来进行测试,以确保我实际上不会错误地向真实用户发送电子邮件。

    更多信息@http://netdevtools.com/how-to-test-smtp-emails-without-a-mail-server-no-smtp-configuration-required-in-asp-net-c/

    【讨论】:

      【解决方案2】:

      如果您的 SMTP 配置正确,请执行以下操作:

      MailMessage mail = new MailMessage(); 
      
      mail.To = "To"; 
      mail.From = "From"; 
      mail.Subject = "Subject";     
      mail.Body = "Body"; 
      
      SmtpMail.SmtpServer = "localhost"; 
      SmtpMail.Send(mail); 
      

      【讨论】:

      • To 是“get”属性,不能这样设置。
      【解决方案3】:

      从谷歌试试这个

      http://mailsystem.codeplex.com/

      【讨论】:

        【解决方案4】:

        不久前我回答了一个类似的问题。可以here查看。使用papercut,您可以在不知道或使用实际生产 smtp 服务器的情况下测试您的应用程序。

        然后在测试期间,您可以将主机设置为在 app/web 配置中运行剪纸的本地机器。因此,一旦投入生产,就可以对其进行更改。

        Papercut 会显示已发送的电子邮件以及内容。

        【讨论】:

          【解决方案5】:

          作为替代方案:如果您不想依赖服务器配置并以编程方式进行,您可以随时这样做:

          MailMessage mail = new MailMessage() {
              To = "someone@somewhere",
              From = "someone@somewhere",
              Subject = "My Subject",
              Body = "My message"
          };
          
          SmtpClient client = new SmtpClient("SMTP Server Address");
              // Naturally you change the "SMTP Server Address" to the
              // actual SMTP server address
          client.Send(mail);
          

          但我建议你把它放在 web.config 文件中(也可以通过 ASP.NET Web 配置工具进行配置)。

          【讨论】:

          • 这行不通。我收到一个 .NET 异常:“发送邮件失败。”内部异常说:“{“无法解析远程名称:'SMTP服务器地址'”}”
          • @johnathanconway:嗯……你应该在“SMTP 服务器地址”字符串中输入 smtp 服务器的地址。
          【解决方案6】:

          将此添加到您的 web.config (MSDN reference here):

          <system.net>
              <mailSettings>
                  <smtp deliveryMethod="Network" from="jdoe@example.com">
                      <network host="localhost" port="25" />
                  </smtp>
              </mailSettings>
          </system.net>
          

          使用 SmtpClient 而不指定配置设置将使用 web.config 中的值:

          MailMessage msg = new MailMessage(...);
          // build message contents
          SmtpClient client = new SmtpClient();
          client.Send(msg);
          

          【讨论】:

            【解决方案7】:

            最好的答案是,如果你在直播之前什么都不知道,你能把所有的设置都移到 web.config 中吗?这将允许配置直到最后一分钟。下面是一些转储到 web.config 文件中的代码。我会质疑为什么您无法访问此信息

            <system.net>
                <mailSettings>
                  <smtp from="you@yourdomain.com">
                    <network host="SMTP SERVER ADDRESS" port="25"
                     userName="USERNAME" password="PASSWORD">
                  </smtp>
                </mailSettings>
              </system.net>
            

            【讨论】:

              猜你喜欢
              • 2011-06-06
              • 1970-01-01
              • 1970-01-01
              • 2021-03-29
              • 1970-01-01
              • 2013-12-08
              • 1970-01-01
              • 2014-01-13
              • 2013-11-21
              相关资源
              最近更新 更多