不能在我的本地主机上发送电子邮件么?

时间:2012-11-14 09:46:21

标签: c#

为什么我无法在本地主机上发送电子邮件我收到此错误:未指定SMTP主机

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage("fromEmail@email.com","toEmail@email.com", "Test", "Test Body");
            System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();

            client.Send(mail);

        }
    }
}

2 个答案:

答案 0 :(得分:2)

假设您想使用“localhost”邮寄

尝试:

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("localhost", 25);

如果不是:

如果邮件服务器不在您的localhost上,请指定smtp客户端 ipAddress 或主机名和smtp服务端口

编辑:这里有一些使用gmail发送邮件的示例代码:

SmtpClient clientesmtp = GetSmtpClient();
MailMessage msg = new MailMessage("from@gmail.com", "to@gmail.com", "Subject","body");
msg.IsBodyHtml = true;
clientesmtp.Send(msg);           

private static SmtpClient GetSmtpClient()
{
SmtpClient clientesmtp = new SmtpClient("smtp.gmail.com", 587);
clientesmtp.Credentials = new System.Net.NetworkCredential("user", "password");
clientesmtp.EnableSsl = true;
return clientesmtp;
}

答案 1 :(得分:1)

默认情况下,SMTPClient will use来自应用程序或machine.config文件的<mailSettings>中定义的主机和端口。

  

此构造函数使用应用程序或计算机配置文件中的设置初始化新SmtpClient的Host,Credentials和Port属性。

那些defaultslocalhost:25。但是,您可能已经编辑了machine.config以删除该主机。

您可以编辑application.config或machine.config以包含适当的mailSettings属性,也可以在代码中指定适当的值。

当然,您需要在localhost上运行一个SMTP服务器,但是根据您的问题我假设您这样做了吗?