我有以下代码,但我得到一个例外,即未定义smtp主机。如果我正在运行此操作并在visual studio中对我的本地计算机进行测试,那么我需要做些什么才能从我的计算机发送电子邮件。我是否必须打开某些Windows服务?
private void SendMailToAdminToApprove(string email_, string name_)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("address@domain.com", "Person's Name");
msg.To.Add(new MailAddress("a@gmail.com", "Adam"));
msg.Subject = "Message Subject";
msg.Body = "Mail body content";
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;
try
{
SmtpClient c = new SmtpClient();
c.Send(msg);
}
catch (Exception ex)
{
Console.Write("T");
}
}
答案 0 :(得分:8)
您需要将SMTP主机设置为指向实际的SMTP服务器。一种选择是在您自己的计算机上运行SMTP服务,但您也可以指向ISP的服务器。
修改的
正如pcampbell和Skeolan所提到的,实际值应该进入app.config。我不确定localhost是否会例外:它取决于你是否想要选择不运行本地服务器。
答案 1 :(得分:7)
您需要在此处指定SMTP主机:
string smtpHost = "localhost";
//or go to your config file
smtpHost = ConfigurationManager.AppSettings["MySmtpHost"].ToString();
SmtpClient c = new SmtpClient(smtpHost);
答案 2 :(得分:1)
您需要定义SMTP中继:
SmtpClient c = new SmtpClient("relay.yourdomain.com");
或者如果您在本地运行中继:
SmtpClient c = new SmtpClient("localhost");
答案 3 :(得分:1)
您应该更改此部分:
SmtpClient c = new SmtpClient();
// Either specify a SMTP server above, or set c.Host
c.Send(msg);
您需要指定将用于发送此邮件的SMTP服务器。如果在本地安装SMTP服务器,则可能是localhost - 但是,您需要正确设置外发邮件服务器。
答案 4 :(得分:0)
以下是我用C#发送电子邮件的代码。如果需要,我还注释了将代码发送到本地文件的代码。
SmtpClient smtp = new SmtpClient(smtpServer, portNumber);
// Disable SSL when saving to directory.
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential(mailFrom, password);
// Set mail to be delivered to a folder
//smtp.PickupDirectoryLocation = @"C:\mail\Send";
//smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;