使用.NET发送电子邮件

leo*_*ora 0 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*dit 8

您需要将SMTP主机设置为指向实际的SMTP服务器.一种选择是在您自己的计算机上运行SMTP服务,但您也可以指向ISP的服务器.

编辑

正如pcampbell和Skeolan所提到的,实际值应该进入app.config.我不确定localhost是否会是一个例外:它取决于你是否想要选择不运行本地服务器.


p.c*_*ell 7

您需要在此处指定SMTP主机:

string smtpHost = "localhost";
//or go to your config file
smtpHost = ConfigurationManager.AppSettings["MySmtpHost"].ToString();

SmtpClient c = new SmtpClient(smtpHost);
Run Code Online (Sandbox Code Playgroud)

  • 更好的是,将实际的stmpHost字符串拉出到app.config或web.config中,以便您可以针对不同的部署进行修改.然后您可以使用"localhost"进行开发(假设您在本地计算机上运行[虚拟?] smtp服务),但仍然可以选择在以后指定外部电子邮件服务器而无需重新编译. (4认同)