我们正在尝试使用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
答案 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 (来自的地址必须与您发送的网站的域名相匹配)