使用.NET发送电子邮件

时间:2009-07-31 16:41:24

标签: c# email smtp

我有以下代码,但我得到一个例外,即未定义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");
    }
}

5 个答案:

答案 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;