C#如何发送邮件?

时间:2011-02-17 12:09:02

标签: c# .net

我正在使用C#.NET 4.0,并希望向主题和正文的地址发送电子邮件,正文将包含我应用程序中几个文本框中的一些信息。

我几乎没有使用C#发送电子邮件的经验,所以我们将不胜感激。我所知道的是你必须使用System.Net.Mail命名空间。我尝试了这段代码,但它给出了“发送邮件失败”的例外情况。

        new SmtpClient("smtp.server.com", 25).Send("test@hotmail.com",
                                       "test@gmail.com",
                                       "subject",
                                       "body");

上述代码有什么问题?此外,有没有更好的方式发送电子邮件?

5 个答案:

答案 0 :(得分:16)

您的身份验证(凭据)或服务器名称/端口可能不正确。

试试这个:

        MailMessage mailMsg = new MailMessage();
        mailMsg.To.Add("test@hotmail.com");
                    // From
        MailAddress mailAddress = new MailAddress("you@hotmail.com");
        mailMsg.From = mailAddress;

        // Subject and Body
        mailMsg.Subject = "subject";
        mailMsg.Body = "body";

        // Init SmtpClient and send on port 587 in my case. (Usual=port25)
        SmtpClient smtpClient = new SmtpClient("mailserver", 587);
        System.Net.NetworkCredential credentials = 
           new System.Net.NetworkCredential("username", "password");
        smtpClient.Credentials = credentials;

        smtpClient.Send(mailMsg);

答案 1 :(得分:8)

你不能留下这个字符串:

  

smtp.server.com

你应该有你的smtp服务器的名称,通常是mail.yourcompanyname.com或smtp.yourcompanyname.com

答案 2 :(得分:2)

smtp.server.com真的是一个SMTP服务器吗?你需要用真实的替换它。您的ISP可能会为您提供一个,但它可能只会转发来自您的ISP所拥有的地址的电子邮件。

答案 3 :(得分:1)

我曾与三家知名ISP合作主持我的客户网站。所有三个ISP都指示我使用“localhost”作为smtp服务器名称。

答案 4 :(得分:0)

添加:

SmtpServer.EnableSsl = true;