2

我有一个用 C# 和 Framework 2.0 编写的简单 .net Web 应用程序。

它唯一做的就是调用这个函数:

    static void SendMail(string strSubject, string strBody, string strFrom, string strTo, string strHost)
    {
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(strFrom);
        msg.To.Add(new MailAddress(strTo));

        msg.Subject = strSubject;
        msg.Body = strBody;
        msg.Priority = MailPriority.Normal;

        SmtpClient smtpClient = new SmtpClient();
        smtpClient.Host = strHost;
        smtpClient.Send(msg);
    }

它编译并运行没有错误,但无论我将其发送给谁,我都没有收到电子邮件。

然而,奇怪的是,在我经理的计算机上编译和运行的同一个程序运行良好,并发送了一封电子邮件。

我们都在 Visual Studio 2008 上运行它。

他的电脑和我的唯一区别是他使用的是 Windows XP,而我使用的是 Windows 7。

任何信息都有帮助。我正在寻找我可以检查的东西。

4

5 回答 5

1

听起来可能是防火墙问题。您机器上的防火墙或网络上的防火墙。另外,检查您的垃圾文件夹。我知道这些听起来很简单,但它为你的经理工作的事实使它看起来像是一个非代码问题。

于 2012-05-04T21:41:43.643 回答
0

XP 机器是否可以访问 SMTP 服务器?

您需要向 SMTP 服务器提供 4 个参数才能成功使用 SmtpClient、MailMessage 等。

  • 主机="SMTPServerHostName"
  • port="portNumber"(通常使用端口 25)
  • 用户名="用户名"
  • 密码="密码"

也许 XP PC 无法访问 SMTPServerHostName,或者,如果您使用的是 localhost,也许 XP 工作站没有安装 SMTP。

另一种可能性是,正如 Josh 所说,host:port 被阻塞了。

于 2012-05-04T21:45:19.113 回答
0

使用 SmtpClient,您尚未设置凭据或帐户信息,因此当它尝试发送电子邮件时,它无法在没有帐户信息的情况下发送。替换这个:

SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = strHost;
smtpClient.Send(msg);

和:

SmtpClient smtpClient = new SmtpClient();
smtpclient.Credentials = new NetworkCredentials(email, password);
smtpClient.Host = strHost;
smtpClient.Send(msg);

用您自己的电子邮件和密码替换。

希望这可以帮助!

于 2012-05-04T21:54:56.400 回答
0

较旧的 XP 机器可能具有 SMTP 功能。我已经看到了这个确切的东西。Windows 7 没有本机 SMTP 功能。我知道我的旧 XP 机器有一个带有 IIS 的 SMTP 服务器,而我现有的发送邮件的程序在 Windows 7 上失败了。我厌倦了在开发环境中与它抗争,只好忍受它。

于 2012-05-04T22:24:12.437 回答
0

找到了解决方案!

在我的本地 IIS(版本 7)中,有一个名为“SMTP 电子邮件”的图标。打开这个,我发现它设置为“将电子邮件存储在拾取目录中”。这一定是以前使用我电脑的程序员设置的。我将其重置为“将电子邮件发送到 SMTP 服务器”,现在一切正常。

注意:IIS 甚至不需要运行。

于 2012-05-07T23:19:13.033 回答