在ASP.Net#2中发送电子邮件

时间:2013-07-05 17:01:10

标签: c# asp.net

我使用以下代码发送电子邮件。有时它工作正常,有时它会产生错误。 是否有更好的代码来发送电子邮件。另外还有一件事是提供发送邮件的密码。

using System.Net.Mail;
public void SendEmail()
{
    MailMessage mail = new MailMessage();

    mail.To.Add("sales@ojhatraders.com");
    mail.From = new MailAddress("ojhatraderscustomer@gmail.com");
    mail.Subject = "Contact Us Enquiry";

    string Body = "<b>From:<b>" + mail.From + "<br/>" + "Your Query Recived "+"<br/>"+"Name"+nameTextBox.Text+"<br/>"+"Mobile:"+mobileTextBox.Text+"<br/>"
        +"Email:"+emailTextBox.Text+"<br/>"+"Query:"+queryTextBox.Text;
    mail.Body = Body;

    mail.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient();

    smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
    smtp.Credentials = new System.Net.NetworkCredential("sample@gmail.com", "passsword");//Or your Smtp Email ID and Password
    smtp.EnableSsl = true;
    smtp.Send(mail);
}

请提供一些有用的建议和更好的代码。

3 个答案:

答案 0 :(得分:1)

您是否尝试过添加

     smtp.Port = 587;   

保持凭据保密的最佳方法是运行SMTP服务器,接受匿名引荐。满足此条件后,匿名请求不需要凭据。允许匿名请求的邮件服务越来越少,而过去一直是猖獗的邮件服务。 10年前。现在,大多数SMTP服务都需要有效的用户名和密码凭据,有些甚至是网络域凭据。

答案 1 :(得分:1)

错误

如果没有告知我们代码生成的错误,我们就无法帮助解决该问题。你应该检查推荐的smtp-port。来自Google支持网站:

  

如果您尝试在端口465(使用SSL)和端口587(使用TLS)上配置SMTP服务器,但仍然无法发送邮件,请尝试将SMTP配置为使用端口25(使用SSL)。

'更好'代码

在ASP.NET中发送邮件非常明显,因此发送邮件的“更好”代码更多的是一种观点而不是事实。但是,我应该从架构的角度来分析一些事情。这将提高代码质量并减少重复代码。

您应该考虑采取哪些措施来使这些代码“更好”。

  1. 使用stringbuilder构建邮件内容并将其注入mailtemplate
  2. 使用例如单独的“电子邮件”课程默认构造函数,Send()和GetTemplate()方法
  3. 在web.config中指定SMTP的设置
  4. 通过这种方式,您可以从应用程序的任何位置制作和发送电子邮件。我的一个应用程序中的一些示例代码:

    var content = new StringBuilder();
    content.Append("Name: " + contactForm.Name + "<br/>");
    content.Append("Email: " + contactForm.Name + "<br/>");
    content.Append("Message: " + contactForm.Name + "<br/>");
    
    //Email constructor accepts two arguments: the content and the name of the template
    var mail = new Email(content, "mailTemplateName")
    mail.Send("mymail@domain.be", "recipient@gmail.com", "Subject of the mail")
    

答案 2 :(得分:0)

尝试为SMTP添加端口。通常使用的是25,465和587.我通常使用25而没有问题,你也可以使用465作为ssl。我通常也会将UseDefaultCredentials设置为false:

SmtpClient smtp = new SmtpClient();
smtp.Port = 25;
smtp.UseDefaultCredentials = false;

此外,您可能希望在使用它们后处理它们。这是一种很好的做法,对性能和成本更安全。

using (smtp as IDisposable) 
                { 
                    smtp.Send(yourEmail); 
                    yourEmail.Dispose(); 
                }

总而言之,这是一个非常开放的问题。希望这会有所帮助,但要更具体一点,以便下次可以获得更好的帮助