我使用以下代码发送电子邮件。有时它工作正常,有时它会产生错误。 是否有更好的代码来发送电子邮件。另外还有一件事是提供发送邮件的密码。
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);
}
请提供一些有用的建议和更好的代码。
答案 0 :(得分:1)
您是否尝试过添加
smtp.Port = 587;
保持凭据保密的最佳方法是运行SMTP服务器,接受匿名引荐。满足此条件后,匿名请求不需要凭据。允许匿名请求的邮件服务越来越少,而过去一直是猖獗的邮件服务。 10年前。现在,大多数SMTP服务都需要有效的用户名和密码凭据,有些甚至是网络域凭据。
答案 1 :(得分:1)
如果没有告知我们代码生成的错误,我们就无法帮助解决该问题。你应该检查推荐的smtp-port。来自Google支持网站:
如果您尝试在端口465(使用SSL)和端口587(使用TLS)上配置SMTP服务器,但仍然无法发送邮件,请尝试将SMTP配置为使用端口25(使用SSL)。
在ASP.NET中发送邮件非常明显,因此发送邮件的“更好”代码更多的是一种观点而不是事实。但是,我应该从架构的角度来分析一些事情。这将提高代码质量并减少重复代码。
您应该考虑采取哪些措施来使这些代码“更好”。
通过这种方式,您可以从应用程序的任何位置制作和发送电子邮件。我的一个应用程序中的一些示例代码:
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();
}
总而言之,这是一个非常开放的问题。希望这会有所帮助,但要更具体一点,以便下次可以获得更好的帮助