我正在使用我的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;
}
}
答案 0 :(得分:0)
在潜入并设置自己的SMTP服务器以转发到Gmail之前,您可能想要做更多的研究。
如果您的“托管服务器”位于DOMAIN.COM,并且您从HAANSI@DOMAIN.COM发送电子邮件,或者您使用GMail进行身份验证为“HAANSI@DOMAIN.COM”,则可能会遇到一些困难即使代码没有错误并且您已正确设置SMTP服务器,也要从localserver发送消息。 AFAIK,Gmail不会中继,并且对身份验证非常严格(使用安全身份验证和所有内容)。
如果可能,我建议您从主机服务器发送已经正常运行的消息。
事实上,您甚至可能会考虑一种略有不同的策略,即从该服务器上运行的脚本发送查询字符串params,并让脚本执行发送...或将文件保存到服务器并让程序选择它最多发送...或任何其他将数据传输到服务器的方法,并让服务器将其发送出去。