我正在尝试发送电子邮件,当用户在联系我们页面中点击提交但由于某种原因它不起作用时,我做错了什么? (PS电子邮件和密码已从此代码段中省略,但包含在实际解决方案中。
由于
web.config中的代码:
<system.net>
<mailSettings>
<smtp from="order@test.com">
<network host="smtp.gmail.com"
userName="" //my email
password="" //password deleted for privacy reasons
defaultCredentials="false"
port="456"
enableSsl="true" />
</smtp>
</mailSettings>
asp.net联系表格中的代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress("test@gmail.com"));
mail.Subject = "Test";
mail.Body = "Message was sent from" + txtName.text + txtComment.text;
SmtpClient smtp = new SmtpClient();
smtp.SendAsync(mail, null);
}
答案 0 :(得分:3)
Gmails使用端口465
,而不是456
用于SSL SMTP。来自here:
外发邮件(SMTP)服务器 - 需要TLS1或SSL:smtp.gmail.com
使用身份验证:是
TLS / STARTTLS的端口:587
SSL端口:465
答案 1 :(得分:1)
“其他”可能的原因:
在本地开发时,您的代码是否“正常”,但是当您将文件“发布”/ ftp / copy等文件发送到Web主机时,代码会停止工作?
如果 Yes
:请检查主机的ASP.Net trust
设置。如果它是medium trust
(可能在共享主机中),请注意中信任无法使用任何端口其他而不是端口25 用于SMTP 强>
它在本地(dev)工作,因为在本地dev / VS环境中,ASP.Net在full trust
中运行。
REF(MSDN博客):SMTP Problems when ASP.Net is not running in full-trust