需要帮助设置SMTP

时间:2009-10-20 01:47:58

标签: c# .net asp.net-mvc smtp

我遇到了一个奇怪的问题,我不确定原因。

我在我的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();

        }

    }

3 个答案:

答案 0 :(得分:0)

由于SMTP默认端口为25,您可能只需要在配置中更新此信息。

答案 1 :(得分:0)

为了清楚起见,.Port属性是指邮件服务器的端口,而不是您发送电子邮件的端口。

现在,就是说,mail.reliablesite.net确实有一个在端口2525运行的SMTP服务(我刚检查过,你可以telnet到它,然后得到欢迎回复)。

接下来的问题是“您怎么知道电子邮件未发送?”你没有提到任何关于异常的事情。你是说它只是没有出现在你的收件箱中?如果是,请检查您的垃圾邮件文件夹。

如果这不起作用,那么我建议启用System.Net.Mail的日志记录,并检查日志文件。

答案 2 :(得分:0)

  1. 我建议使用System.Net设置而不是appsettings。这可确保您在SMTPClient上调用任何方法或属性时自动获取设置。

              

  2. 现在 - 提出您的问题,其他人指出25是SMTP端口。有时,SMTP配置为使用服务器上的特定端口,您需要在配置文件中配置它。您可以尝试使用以下代码通过代码从GMAIL帐户发送邮件。

                

  3. 使用try catch包装smtp.send()并检查是否有任何异常。