2010-09-29 165 views
0

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

try 
{ 
    var mailmessage = new MailMessage(); 
    mailmessage.From("[email protected]"); 
    mailmessage.To.Add(new MailMessage(mailTo)); 
    mailmessage.ReplyTo("[email protected]"); 
    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="[email protected]"> 
     <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> 

我不是在所有这让我假设它是用我的我的web.config设置设置任何MailDefinition属性,那么,为什么可以这样控制使用这些设置,但我的C#代码不能。我猜这是我的邮件信息?

欣赏你们可以提供的任何帮助。

谢谢!

+1

如果将DeliveryMethod更改为Pickupdirectory和speficy目录会怎么样?你在那个目录中收到电子邮件吗? – Roger 2010-09-29 18:53:30

+0

查看您的smtp服务器的事件日志 – citronas 2010-09-29 18:57:59

回答

2

我想通了 - 对不起,浪费你的时间的家伙。这只是一种赘述,我让智力能够充分利用我。

mailmessage.To.Add(new MailMessage(mailTo));

应该读

mailmessage.To.Add(新MailAddress(MAILTO));

很高兴它解决了,但不知道我是如何错过了。

0

这些电子邮件是什么样子的?他们可能会因为垃圾邮件而被杀害,尤其是因为您将它们发送为HTML(垃圾邮件过滤器为链接,图片等提供了大量生命点)。密码恢复控件默认发送纯文本;你有没有尝试运行上面的代码手动发送一条消息作为纯文本?

0

有可能您的电子邮件服务器不喜欢“[email protected]”的“发件人”地址(在您的代码中指定),但它的确如,如“发件人” [email protected]“(在你的web.config中指定)。

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