我遇到了一个奇怪的问题,我不确定原因。
我在我的webconfig中有这个
<add key="SMTP" value="mail.reliablesite.net"/>
<add key="Email" value="Email"/>
<add key="EMAIL_PASSWORD" value="Password"/>
<add key="FROM_PORT" value="2525"/>
现在当我通过localhost测试smtp一切都很好并发送我的smtp和一切。我上传我的webconfig加上我所有的其他文件,我尝试测试我的smtp并没有发送消息。完全相同的代码和一切。
所以我不明白为什么这不起作用。
这就像我的代码的精简版。
public class MyTestController : Controller
{
//
// GET: /MyTest/
public void Index()
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("From");
mail.To.Add("To");
mail.Subject = "subject";
mail.IsBodyHtml = true;
mail.Body = "body";
NetworkCredential credential = new NetworkCredential("EmailFromMyHostingSite", "Password");
SmtpClient smtp = new SmtpClient();
smtp.Host = "mail.reliablesite.net";
smtp.Port = 2525;
smtp.Credentials = credential;
smtp.Send(mail);
mail.Dispose();
}
}
答案 0 :(得分:0)
由于SMTP默认端口为25
,您可能只需要在配置中更新此信息。
答案 1 :(得分:0)
为了清楚起见,.Port属性是指邮件服务器的端口,而不是您发送电子邮件的端口。
现在,就是说,mail.reliablesite.net确实有一个在端口2525运行的SMTP服务(我刚检查过,你可以telnet到它,然后得到欢迎回复)。
接下来的问题是“您怎么知道电子邮件未发送?”你没有提到任何关于异常的事情。你是说它只是没有出现在你的收件箱中?如果是,请检查您的垃圾邮件文件夹。
如果这不起作用,那么我建议启用System.Net.Mail的日志记录,并检查日志文件。
答案 2 :(得分:0)
我建议使用System.Net设置而不是appsettings。这可确保您在SMTPClient上调用任何方法或属性时自动获取设置。
现在 - 提出您的问题,其他人指出25是SMTP端口。有时,SMTP配置为使用服务器上的特定端口,您需要在配置文件中配置它。您可以尝试使用以下代码通过代码从GMAIL帐户发送邮件。
使用try catch包装smtp.send()并检查是否有任何异常。