“尝试将Amazon SES与共享主机一起使用时,在.NET中请求”System.Net.Mail.SmtpPermission“类型的权限

时间:2014-01-30 19:13:01

标签: c# asp.net smtp amazon-ses

我们正在尝试使用Amazon SES向注册用户发送自动验证电子邮件。 我们有一个共享主机帐户,并已在Amazon SES上验证了该域名。

它在本地工作,但在服务器上,我们不断收到此错误:

  

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

我们搜索了所有类似帖子,包括this,但仍然感到困惑:我们做错了什么?

我们的web.config设置:

<appSettings>
    ...
    <add key="EMAIL_FROM_PREFIX" value="hey UD"></add>
    <add key="EMAIL_FROM" value="verify@heyud.com"></add>
    <add key="EMAIL_TO" value="admin@heyud.com"></add>
    <add key="EMAIL_SUBJECT" value="heyUD user verification"></add>

    <add key="SMTP_USERNAME" value="asdf"></add>
    <add key="SMTP_PASSWORD" value="asdf"></add>
    <add key="SMTP_HOST" value="email-smtp.us-east-1.amazonaws.com"></add>
    <add key="SMTP_PORT" value="25"></add>
  </appSettings>

以下是Elmah的屏幕截图:https://www.dropbox.com/s/t2ngk0ddcy0c5q6/Screenshot%202014-01-31%2000.34.06.png

1 个答案:

答案 0 :(得分:2)

GoDaddy共享托管往往非常严格(特别是在通过SMTP发送电子邮件时)。

尝试使用AmazonSimpleEmailServiceClient.SendEmail代替SMTP。

AmazonSimpleEmailServiceClient client = 
    new AmazonSimpleEmailServiceClient("awsKey", "awsSecret");

SendEmailRequest req = new SendEmailRequest()
    .WithDestination(new Destination() { ToAddresses = new List<string> { "admin@heyud.com" } })
    .WithSource("verify@heyud.com")
    .WithReturnPath("verify@heyud.com")
    .WithMessage(
        new Amazon.SimpleEmail.Model.Message(new Content("Sup Bro?"),
        new Body().WithHtml(new Content("<em>Gurl look at ma body</em>, <b>I work out</b>"))));

var resp = client.SendEmail(req);

一起忘记SES并执行此操作:https://stackoverflow.com/a/5685126/585552 (来自的地址必须与您发送的网站的域名相匹配)