来自ASP.NET的SMTP电子邮件

来自ASP.NET的SMTP电子邮件,asp.net,smtp,Asp.net,Smtp,我有一个asp.net 4.0网站,它根据整个网站上的几个不同事件生成电子邮件警报。我在我的App_code文件夹中的Utility.cs类中使用以下代码。Subject、body和mailto是传递到方法中的参数 try { var mailmessage = new MailMessage(); mailmessage.From("admin@xxxxxx.com"); mailmessage.To.Add(new MailMessage(mailTo));

我有一个asp.net 4.0网站,它根据整个网站上的几个不同事件生成电子邮件警报。我在我的App_code文件夹中的Utility.cs类中使用以下代码。Subject、body和mailto是传递到方法中的参数

try
{
    var mailmessage = new MailMessage();
    mailmessage.From("admin@xxxxxx.com");
    mailmessage.To.Add(new MailMessage(mailTo));
    mailmessage.ReplyTo("no-reply@xxxxxx.com");
    mailmessage.Subject = subject;
    mailmessage.Body = body;
    mailmessage.IsBodyHtml = true;
    var smtpClient = new SmtpClient();
    smtpClient.Send(mailmessage);
}
catch (Exception smtpEx)
{// write to windows event log}
还有我的web.config

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="no-reply@xxxxxx.com">
        <network host="xxx.xxx.xxx.xxx" port="25" defaultCredentials="true"/>
      </smtp>
    </mailSettings>
  </system.net>

这些电子邮件从未收到过。然而有趣的是,当我使用“忘记密码”功能时,我确实收到了我的电子邮件。该功能是使用PasswordRecovery控件实现的,使用方法如下

<asp:PasswordRecovery ID="xxx" Visible="false" runat="server"></asp:PasswordRecovery> 

我根本没有设置任何MailDefinition属性,这使我假设它正在使用我的my web.config设置,那么为什么该控件可以使用这些设置,而我的c#代码却不能。我猜可能是我的邮件吧

感谢你们能提供的任何帮助


谢谢

这些电子邮件看起来像什么?他们可能会因为垃圾邮件而被杀死,特别是因为你以HTML的形式发送他们(垃圾邮件过滤器会为链接、图像等提供大量的点击率)。密码恢复控件默认发送纯文本;您是否尝试过运行上述代码以纯文本形式手动发送邮件?

您的电子邮件服务器可能不喜欢的“发件人”地址admin@xxxxxx.com“(在您的代码中指定),但它确实像“发件人”地址中的“否”-reply@xxxxxx.com“(在web.config中指定)


验证您的电子邮件服务器是否设置为有效的电子邮件地址。此外,很多时候,电子邮件服务器会验证发件人地址的域实际上来自您发送邮件的IP地址。您可以在DNS中设置一个SPF记录,该记录将告诉电子邮件服务器该域是来自W.X.Y.Z IP地址的有效发件人。

我想出来了-很抱歉浪费您的时间。这只是一个过了头的网站,我让intellisence占了上风

mailmessage.To.Add(新建mailmessage(mailTo))

应该读

mailmessage.To.Add(新的邮件地址(mailTo))


很高兴问题解决了,但我不知道我怎么会错过它。

如果您将DeliveryMethod更改为Pickupdirectory并指定一个目录,会怎么样?您是否收到该目录中的电子邮件?请查看smtp服务器的事件日志