在IIS中的默认SMTP虚拟服务器的属性中,“中继限制”已设置好。程序中的代码如下:
Server.ScriptTimeout = 1000;
Response.Flush(); SmtpMail.SmtpServer = "localhost";
MailMessage mail = new MailMessage();
mail.To = "[email protected]";
mail.From = "这里可以随便写吧";
mail.Subject = "管理员回复";
mail.Body = "您发布的物品已通过审批!"; try
{
SmtpMail.Send(mail);
}
catch(Exception ex)
{
Response.Write(ex.ToString());
} Response.Flush();发送时,程序不报错,但那个目标邮箱总是收不到邮件,大家帮我看看啊,是iis还需要其他的设置,还是代码有问题?

解决方案 »

  1.   

    这是IIS中的SMTP的一个BUG,有时就算是你发出去了,对方也收不到
      

  2.   

    换个服务器工具,比如jMail等,能更好一些
      

  3.   

    我一般不是用这种方式发邮件的,是用的CDO先添加Interop.ADOBD Interop.CDO 的引用代码页中先 using CDO;然后---------------------------------------------------------------------------------------
    ConfigurationClass conf=new ConfigurationClass();
    conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value=CdoSendUsing.cdoSendUsingPort;
    conf.Fields[CdoConfiguration.cdoSMTPServer].Value="smtp.56.com";
    conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value=25;
    conf.Fields[CdoConfiguration.cdoSMTPAccountName].Value="username";
    conf.Fields[CdoConfiguration.cdoSendUserReplyEmailAddress].Value="\"username\" <[email protected]>";
    conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value="\"username\" <[email protected]>";
    conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
    conf.Fields[CdoConfiguration.cdoSendUserName].Value="usrname";conf.Fields[CdoConfiguration.cdoSendPassword].Value="password";conf.Fields.Update();MessageClass msg=new MessageClass();
    msg.Configuration=conf;

    msg.To=mail;
    msg.Subject="邮件主题!";msg.TextBody=sb.ToString();
    msg.From="[email protected]";
    msg.Send();-------------------------------------------------------------------------
    用用户名和密码认证的方式,来使用别人的SMTP服务器,不是更爽吗
    呵呵,我一直用的这个方法