我正在尝试通过 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)
有什么解决办法吗?请给我建议!
验证正确的枚举值时,我抛出 ArgumentOutOfRangeException:
internal class MyClass : IMyInterface
{
private readonly MyEnum _myEnum;
public MyClass(MyEnum myEnum) => _myEnum = myEnum;
public String MyString
{
get
{
switch (_myEnum)
{
case MyEnum.A:
return "A";
case MyEnum.B:
return "B";
default:
throw new ArgumentOutOfRangeException("_myEnum");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在构建时遇到 CA2208 错误:
CA2208 方法“MyCLass.MyString.get()”将“_myEnum”作为“paramName”参数传递给“ArgumentOutOfRangeException”构造函数。将此参数替换为方法的参数名称之一。请注意,提供的参数名称应具有与方法上声明的完全相同的大小写。
我不确定为什么这条规则如此严格,因为参数必须是方法的参数之一,而且我不能使用类字段。
我正在考虑取消此警告,但我宁愿调查为什么会发出此警告。
注意:MyString 属性是 IMyInterface 的一部分,不能将此枚举值作为参数。