小编Vis*_*mar的帖子

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

我正在尝试通过 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)

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

c# email gmail smtpclient

6
推荐指数
1
解决办法
3127
查看次数

使用类字段作为参数时抛出 ArgumentOutOfRangeException 时的 CA2208

验证正确的枚举值时,我抛出 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 的一部分,不能将此枚举值作为参数。

.net c# code-analysis

4
推荐指数
1
解决办法
2305
查看次数

标签 统计

c# ×2

.net ×1

code-analysis ×1

email ×1

gmail ×1

smtpclient ×1