ASP MVC:发送电子邮件

时间:2010-04-30 11:35:06

标签: c# asp.net asp.net-mvc email iis-7

我是.NET平台的新手。目前我正在学习ASP.NET MVC。

我想从我的程序发送一封电子邮件,我有以下代码:

public void sendVerrificationEmail()
    {
        //create the mail message
        MailMessage mail = new MailMessage();

        //set the addresses
        mail.From = new MailAddress("");
        mail.To.Add("");

        //set the content
        mail.Subject = "This is an email";
        mail.Body = "this is a sample body with html in it. <b>This is bold</b> <font color=#336699>This is blue</font>";
        mail.IsBodyHtml = true;

        //send the message
        SmtpClient smtp = new SmtpClient("127.0.0.1");
        smtp.Send(mail);
    }

现在,当我执行此代码时,我将得到以下异常:

System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:25

现在,我对IIS管理器和管理员非常了解。东西。所以那里可能有些不对劲。

我是否需要安装虚拟SMTP服务器?目前我有以下设置:

http://img153.imageshack.us/img153/695/capture2p.png http://img153.imageshack.us/img153/695/capture2p.png

我一直在寻找几个小时,但我似乎找不到合适的解决方案。

帮助将不胜感激!

3 个答案:

答案 0 :(得分:6)

你正在打电话

SmtpClient smtp = new SmtpClient("127.0.0.1"); 

localhost上应该有一个SMTP服务器。如果不存在,则可以使用网络的MailServer。

出于测试目的,您可以使用

<system.net>
<mailSettings>
      <smtp from="Test@test.com" deliveryMethod="SpecifiedPickupDirectory">
        <network host="127.0.0.1" port="25" userName="userID" password="*****" defaultCredentials="true" />
        <specifiedPickupDirectory pickupDirectoryLocation="c:\Temp\mail\"/>
      </smtp>
    </mailSettings>
  </system.net>

这会将您的电子邮件保存在C:\ temp \ mail中而不发送。

答案 1 :(得分:0)

好吧,当您尝试将电子邮件发送到运行在127.0.0.1的SMTP服务时 - 实际上应该只有一个人在那里运行以接受电子邮件,或者;)?

没有关于IIS管理器的东西 - 简单的常识就足够了。

基本上:

  • 请勿在此处设置中继smtp服务。只是不要这样做。

  • 在IIS配置中配置smtp服务 - 这样它就会进入你的web.config并且不会在应用程序的很多地方进行硬编码。

答案 2 :(得分:0)

我通常通过localhost从GMail的SMTP服务发送邮件。当项目上传到我的网络主机时,我有另一种配置。

这是一个例子: http://www.shabdar.org/send-email-using-gmail-account-asp-net-csharp.html