通过 C# 从我的网站发送电子邮件
本文关键字:电子邮件 网站 我的 通过 | 更新日期: 2023-09-27 18:34:01
>我使用以下代码发送电子邮件:
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 :我删除了尝试捕获并捕获此消息的错误: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;
}
}
现在我收到一个错误:(
我收到此链接中提到的"MustIssueStartTlsFirst">错误。我现在正在尝试检查@EdFS点并使用端口 25
UPDATE3:这是因为我使用共享服务器,我只能将端口更改为25,并且钢它不起作用给出相同的错误,我正在尝试从我的服务器备份团队获得支持
假设SMTP服务器(smtp.datagts.net(运行良好,需要检查一些项目:
- 您的代码似乎正在使用
UseDefaultCredentials=true
,但在下一行您提供凭据 - 如评论中所述,请检查端口 587 未在您的虚拟主机上被阻止
- 如果托管在共享服务器(不是专用计算机(上,则可能 ASP.Net 设置为
medium trust
。如果是这样,则不能对 SMTP 使用端口 25以外的任何端口。
更新:
尝试解决错误。在您的本地(开发(计算机中,将其添加到您的 web.config:
<system.web>
...
<securityPolicy>
<trustLevel name="Medium" />
</securityPolicy>
...
本地计算机上的 ASP.Net 运行在 FULL TRUST
中。上述设置使您正在使用的当前网站/应用程序在medium trust
运行。您可以根据需要删除/评论。本练习的重点是尝试匹配您的 Web 主机设置(如果在本地机器中工作正常然后在发布时死亡,这显然是不同的(。最好从您的网络主机获取信息。但在那之前....
然后尝试端口 587 和 25。
- 它应该在端口 587 上失败,并出现安全异常(因为
medium trust
( - 如果您的邮件服务器只接受端口 587 上的 SMTP 连接,那么端口 25 当然也不起作用(但您应该收到不同的错误(。关键是"...它仍然不起作用..."> 在这种情况下,SMTP 服务器 (smtp.datagts.net( 只接受端口 587 上的连接
GMAIL也是同样的故事。如果 Web 主机的 ASP.Net 设置medium trust
,则无法使用端口 587。我已经经历过很多次了 - 它将在我的本地机器中"工作",但是一旦我在本地开发机器中启用medium trust
,它就会失败。
您应该询问您的虚拟主机他们的设置是什么 ASP.Net - 如果是一些"自定义"设置,您可以要求副本并在您的开发框中使用它。