部署到主机后,使用 gmail 通过 C# 发送邮件不起作用

Vis*_*mar 6 c# email gmail smtpclient

我正在尝试通过 Gmail 发送邮件。我在本地主机上测试时成功发送邮件,但是当我将它上传到网络主机时这不起作用。我看到这种类型的错误:

请求类型 System.Net.Mail.SmtpPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 的权限失败。

每当我使用端口 25 时,都会出现以下此类错误:

SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 Authentication Required

下面是我发送电子邮件的代码。

MailMessage mail = new MailMessage("host@gmail.com","User@gamil.com");

SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");              
mail.Subject = "Any String" 
mail.Body = mailbody;
mail.IsBodyHtml = true;
SmtpServer.Port = 587;
SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("xyz@gmail.com","123");               
SmtpServer.EnableSsl = true;

SmtpServer.Send(mail);
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?请给我建议!

Min*_*ipe 4

编辑: OP添加了对回答这个问题至关重要的额外信息,但我保留了旧的答案,因为它仍然可能对某人有帮助

新答案: 这个StackOverflow 问题已经回答了这个问题

OldAnswer: 由于StackOverflow 答案已经回答,您将 SMTP 服务器上的端口更改为587默认值 ( 25),这需要提升权限,从而导致此错误更改:

SmtpServer.Port = 587;
Run Code Online (Sandbox Code Playgroud)

对此:

SmtpServer.Port = 25;
Run Code Online (Sandbox Code Playgroud)

它应该有效

注意:使用 SSL 时,端口需要是443