为什么我无法在本地主机上发送电子邮件我收到此错误:未指定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);
}
}
}
答案 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属性。
那些的defaults是localhost:25
。但是,您可能已经编辑了machine.config以删除该主机。
您可以编辑application.config或machine.config以包含适当的mailSettings属性,也可以在代码中指定适当的值。
当然,您需要在localhost上运行一个SMTP服务器,但是根据您的问题我假设您这样做了吗?