在本地计算机上发送电子邮件不起作用

时间:2011-01-06 06:24:23

标签: asp.net asp.net-2.0

我正在使用我的Gmail电子邮件帐户在asp.net网站上发送电子邮件。它在托管服务器上工作正常,但如果我尝试在loclserver上发送电子邮件,它就无法工作。

请指导我应该怎么做才能让它甚至在本地服务器上发送电子邮件?我是否需要在本地计算机上安装一些smtp服务器?我没有在我的机器上安装任何smtp服务器。我如何以及从何处获得smtp服务器,并且还指导我如何在本地计算机上进行设置。

Thnaks

这是我的代码

 public string SendEmail(Email email)
    {
        string errmsg = null;

        if (dt != null)
        {
            try
            {
                dt = systemrep.GetSystemInfo();
                dr = dt.Rows[0];
                From = dr["nm_EmailFrom"].ToString();
                SMTP = dr["nm_SMTP"].ToString();
                Port = dr["amt_Port"].ToString();
                EmailId = dr["nm_emailUserId"].ToString();
                EmailPassword = dr["nm_emailPassword"].ToString();
                DefaultCredations = Convert.ToBoolean(dr["ind_Credentials"].ToString());
                MailMessage message = new MailMessage();
                SmtpClient smtp = new SmtpClient();
                NetworkCredential mailAuthentication = new NetworkCredential(EmailId, EmailPassword);
                message.To.Add(new MailAddress(email.To));
                message.From = new MailAddress(From);
                message.IsBodyHtml = true;
                message.Subject = email.Subject;
                message.Body = email.Message;
                smtp.UseDefaultCredentials = DefaultCredations;
                smtp.EnableSsl = true;
                smtp.Port = 25;
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Host = SMTP;
                smtp.Credentials = new NetworkCredential(EmailId, EmailPassword);


                smtp.Send(message);
            }
            catch (SmtpException smtpEx)
            {

                errmsg = string.Format("alert('There was a problem in sending the email: {0}');", smtpEx.Message.Replace("'", "\\'"));
            }
            catch (Exception generalEx)
            {
                errmsg = string.Format("alert('There was a general problem: {0}');", generalEx.Message.Replace("'", "\\'"));
            }
        }
        else
            errmsg = "An error accured whilte getting email settings from database, process couldn't be completed";

        return errmsg;
    }

}

1 个答案:

答案 0 :(得分:0)

在潜入并设置自己的SMTP服务器以转发到Gmail之前,您可能想要做更多的研究。

如果您的“托管服务器”位于DOMAIN.COM,并且您从HAANSI@DOMAIN.COM发送电子邮件,或者您使用GMail进行身份验证为“HAANSI@DOMAIN.COM”,则可能会遇到一些困难即使代码没有错误并且您已正确设置SMTP服务器,也要从localserver发送消息。 AFAIK,Gmail不会中继,并且对身份验证非常严格(使用安全身份验证和所有内容)。

如果可能,我建议您从主机服务器发送已经正常运行的消息。

事实上,您甚至可能会考虑一种略有不同的策略,即从该服务器上运行的脚本发送查询字符串params,并让脚本执行发送...或将文件保存到服务器并让程序选择它最多发送...或任何其他将数据传输到服务器的方法,并让服务器将其发送出去。