我正在使用这个简单的代码尝试发送电子邮件:
try
{
MailMessage newMail = new MailMessage();
newMail.To.Add("me@mydomain.com");
newMail.Subject = "test";
newMail.Body = "test";
newMail.From = new MailAddress("from@mydomain.com", "from");
newMail.IsBodyHtml = true;
SmtpClient SmtpSender = new SmtpClient();
SmtpSender.Send(newMail);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
以及我的web.config文件中的以下代码:
<system.net>
<mailSettings>
<smtp>
<network host="localhost" userName="me@mydomain.com" password="password" defaultCredentials="true"/>
</smtp>
</mailSettings>
我运行该页面并完成没有错误,但没有发送电子邮件。我做错了什么?
编辑:我已经根据我看过的很多示例更新了代码,现在正在使用名为hMailServer的本地SMTP客户端。我已经在ASP.Net之外测试了我的hMailServer,它确实发送了电子邮件。但是,使用上面的新代码仍然不起作用,也不会抛出任何异常。
答案 0 :(得分:1)
如果您在其他地方托管您的电子邮件表单,您可能需要“在医生处”表格上发送电子邮件。
例如,GoDaddy将阻止来自他们认为是高垃圾邮件源(如GMail,Hotmail和Yahoo! Mail)的某些域的电子邮件。要解决此问题,请从源自您域名的电子邮件地址发送邮件,最好是假邮件,这样您就不会开始收到大量垃圾邮件:
private const string mailer = "no-reply@yourDomain.com";
继续并在您的网站管理员地址中进行操作,以获得良好的衡量标准:
private const string webmaster = "yourEmail@yourDomain.com";
构建电子邮件时,应在回复字段(来自以下代码中的txtEmail.Text
)中指定联系人的电子邮件地址:
lblError.Text = null;
using (var email = new System.Net.Mail.MailMessage(
new MailAddress(mailer), new MailAddress(webmaster)) {
email.ReplyTo = txtEmail.Text; // this comes off of your contact form
string strHtmlBody =
"<html><body style=\"background-color:#cccccc\">" +
txtSubject.Text +
"</body></html>";
email.Subject = "Website Contact";
email.Body = strHtmlBody;
email.IsBodyHtml = true;
var server = new SmtpClient("relay-hosting.secureserver.net");
try {
server.Send(email);
} catch (Exception err) {
lblError.Text = err.Message;
}
}