1

为什么我不能在本地主机上发送电子邮件我收到此错误:未指定 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);

        }
    }
}
4

2 回答 2

2

假设您想使用“本地主机”发送邮件

尝试:

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

如果不:

如果邮件服务器不在您的本地主机上,请指定 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;
}
于 2012-11-14T09:48:22.310 回答
1

默认情况下,SMTPClient将使用<mailSettings>应用程序或 ma​​chine.config 文件中定义的主机和端口。

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

这些的默认localhost:25. 但是,您可能已经编辑了您的 machine.config 以删除该主机。

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

自然,您需要在 localhost 上实际运行一个 SMTP 服务器,但是从您的问题来看,我假设您这样做了?

于 2012-11-14T09:53:10.113 回答