我是.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
我一直在寻找几个小时,但我似乎找不到合适的解决方案。
帮助将不胜感激!
答案 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