我使用以下代码发送电子邮件:
public static bool SendEmail(string To, string ToName, string From, string FromName, string Subject, string Body, bool IsBodyHTML)
{
try
{
MailAddress FromAddr = new MailAddress(From, FromName, System.Text.Encoding.UTF8);
MailAddress ToAddr = new MailAddress(To, ToName, System.Text.Encoding.UTF8);
var smtp = new SmtpClient
{
Host = "smtp.datagts.net",
Port = 587,
EnableSsl = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = true,
Credentials = new System.Net.NetworkCredential("MeEmail@...", "Password")
};
using (MailMessage message = new MailMessage(FromAddr, ToAddr)
{
Subject = Subject,
Body = Body,
IsBodyHtml = IsBodyHTML,
BodyEncoding = System.Text.Encoding.UTF8,
})
{
smtp.Send(message);
}
return true;
}
catch
{
return false;
}
}
它适用于本地,当我在我的本地IIS下使用我的网站时,但当我将其上传到我的网站时,它不起作用,即使发生任何错误也不会发送电子邮件。
有没有人帮我这个?
UPDATE1 :我删除了try catch并收到此消息的错误:Failure sending mail
UPDATE2 :我更改了我的stmp服务器并使用我的Gmail帐户,请查看此代码:
public static bool SendEmail(string To, string ToName, string From, string FromName, string Subject, string Body, bool IsBodyHTML)
{
try
{
MailAddress FromAddr = new MailAddress(From, FromName, System.Text.Encoding.UTF8);
MailAddress ToAddr = new MailAddress(To, ToName, System.Text.Encoding.UTF8);
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new System.Net.NetworkCredential("MeEmail@gmail.com", "Password")
};
using (MailMessage message = new MailMessage(FromAddr, ToAddr)
{
Subject = Subject,
Body = Body,
IsBodyHtml = IsBodyHTML,
BodyEncoding = System.Text.Encoding.UTF8,
})
{
smtp.Send(message);
}
return true;
}
catch
{
return false;
}
}
现在我得到一个错误:(
我收到了此link中提到的“MustIssueStartTlsFirst”错误。 我现在正在尝试检查@EdFS点并使用端口25
UPDATE3 :这是因为我使用的是共享服务器,我只是可以将端口更改为25,而且它不起作用也会产生同样的错误,我试图从我的支持服务器备份团队
答案 0 :(得分:5)
假设 SMTP服务器(smtp.datagts.net)运行正常,需要检查一些项目:
UseDefaultCredentials=true
,但在下一行您提供凭据medium trust
。 IF 所以,您cannot use any port for SMTP other than Port 25。更新
尝试找出错误。在 LOCAL (开发)计算机中,将其添加到您的web.config:
<system.web>
...
<securityPolicy>
<trustLevel name="Medium" />
</securityPolicy>
...
本地计算机上的ASP.Net在FULL TRUST
中运行。上述设置使您正在处理的当前网站/应用程序在medium trust
中运行。您可以根据需要删除/评论。这个练习的目的是尝试并匹配你的网站主机设置(如果你的本地机器上的东西工作,那么它们显然会有所不同)。从你的网站主机获取信息会很高兴..但在那之前......
然后尝试端口587和25。
medium trust
) GMAIL是同一个故事。如果ASP.Net的Web主机设置为medium trust
,则无法使用端口587。我经历了很多次 - 它会&#34;工作&#34;在我的本地计算机上,但只要在本地开发计算机中启用medium trust
,它就会失败。
您应该询问您的网络托管服务商他们对ASP.Net的设置是什么 - 如果它的一些&#34; custom&#34;您可以设置副本并在开发框中使用它。