在asp.net发送邮件

时间:2010-05-26 21:11:19

标签: c# asp.net email system.net.mail

我正在使用asp.net 3.5和C#。

我想从asp.net发送邮件,因为我从托管服务提供商处获得了一些详细信息

这些是:

  • mail.MySite.net
  • 用户名
  • 密码

但我无法通过这些详细信息发送邮件,我在web.config文件中进行了以下更改:

<system.net>
    <mailSettings>
        <smtp>
            <network
                 host="mail.MySite.net"
                 port="8080"
                 userName="UserName"
                 password="Password" />
        </smtp>
    </mailSettings>
</system.net>

另外,在我正在编写此函数的代码中:

MailMessage mail = new MailMessage("webmaster@mySite.net", "XYZ@gmail.com");
mail.Subject = "Hi";
mail.Body = "Test Mail from ASP.NET";
mail.IsBodyHtml = false;

SmtpClient smp = new SmtpClient();
smp.Send(mail);

但由于邮件发送失败,我收到错误消息。

请让我知道我做错了什么以及我必须做些什么来使其正常工作。

提前致谢。

5 个答案:

答案 0 :(得分:2)

您是否需要提供客户凭证?

smp.Credentials = CredentialCache.DefaultNetworkCredentials;

smp.Credentials = new NetworkCredential("yourUserID", "yourPassword", "yourDomainName");

此外,您获得的确切异常将非常有用。

请参阅post by Scott Guthrie以获取更多帮助。

答案 1 :(得分:2)

我怀疑端口8080是正确的smtp端口。也许是25号或587号港口。

答案 2 :(得分:1)

通过asp.net发送电子邮件c#并不复杂......我们只知道smtp端口和主机......

            MailAddress to = new MailAddress("Email Id");

            MailAddress from = new MailAddress("Email Id");

            MailMessage mail = new MailMessage(from, to);

            mail.Subject = "";
            mail.Body = "";


            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;

            smtp.Credentials = new NetworkCredential(
                "Email Id", "Password");
            smtp.EnableSsl = true;

            smtp.Send(mail);

答案 3 :(得分:1)

不使用SMTP,使用Microsoft.Office.Interop.Outlook添加;参考

        Application app = new Application();
        NameSpace ns = app.GetNamespace("mapi");
        ns.Logon("Email-Id", "Password", false, true);
        MailItem message = (MailItem)app.CreateItem(OlItemType.olMailItem);
        message.To = "To-Email_ID";
        message.Subject = "A simple test message";
        message.Body = "This is a test. It should work";

        message.Attachments.Add(@"File_Path", Type.Missing, Type.Missing, Type.Missing);

        message.Send();
        ns.Logoff();

答案 4 :(得分:0)

我的代码与您的代码非常相似,我认为区别在于您需要在SMTP客户端的构造函数中为SMTP服务器提供IP地址。

        MailMessage Email = new MailMessage("donotreply@test.com", "receiver@test.com");
        Email.Subject = "RE: Hello World.";
        Email.Body = "Hello World";
        Email.IsBodyHtml = false;
        SmtpClient Client = new SmtpClient(SMTP_SERVER); //This will be an IP address
        Client.Send(Email);

希望有所帮助! :)

(顺便说一句,我在Winforms,Windows服务和ASP .NET中使用过它。在ASP .NET中,我不需要在aspx页面中提供任何内容。)