无法从.net程序发送电子邮件

时间:2012-05-04 21:33:36

标签: c# smtp smtpclient system.net.mail mailmessage

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

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

    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上。

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

  • host =“SMTPServerHostName”
  • port =“portNumber”(通常使用端口25)
  • 的userName = “username” 的
  • 密码= “密码”

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

另一种可能性是,正如Josh所说,主机:端口被阻止了。

答案 2 :(得分: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);

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

希望这有帮助!

答案 3 :(得分:0)

较旧的XP计算机可能具有SMTP功能。我已经看到了这个确切的事情。 Windows 7没有本机SMTP功能。我知道我的旧XP机器有一个带有IIS的SMTP服务器,而我现有的程序确实发送了邮件,在Windows 7上失败了。我厌倦了在开发环境中与它斗争,并且只是和它一起生活。

答案 4 :(得分:0)

找到解决方案!

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

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