在Amazon SES上使用自签名证书

我正在configurationAmazon Simple Email Service ,当我尝试发送电子邮件时遇到了问题,并收到错误消息:

SMTP服务器需要安全的连接或者客户端没有被authentication。 服务器响应是:需要身份validation

所以我想使用IIS 8的自签名证书,但到目前为止我已经实现了它,我仍然得到相同的错误。

  • 我正在使用.net web.config来设置凭据,主机名和端口。
<mailSettings> <smtp from="[email protected]" deliveryMethod="Network" > <network host="my-amazon-host.com" port="25" defaultCredentials="false" enableSsl="true" userName="my-user-name" password="my-password" /> </smtp> </mailSettings> 
  • 有没有办法使用自签名证书(由IIS创build)和亚马逊服务?
  • 如何设置该证书?

提前致谢!

我读过这个 :

.NET电子邮件TLS库仅支持SES目前不支持的STARTTLS。 我们支持所谓的“TLS包装”或SMTPSauthentication。 我可以理解这是如何令人沮丧,但是您可以使用OpenSSL作为解决方法,并通过运行在您的计算机上的软件来使用.NET来对我们的SMTP端点进行编程。

所以我决定使用亚马逊的SDK做一个自定义的smtp实现:

  var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); var toAddresses = email.To.Select(mailAddress => mailAddress.Address).ToList(); var destination = new Destination {ToAddresses = toAddresses}; var subject = new Content(email.Subject); var textBody = new Content(email.Body); var body = new Body(textBody); var message = new Message(subject,body); var request = new SendEmailRequest(smtpSection.From, destination, message); Amazon.RegionEndpoint region = Amazon.RegionEndpoint.USEast1; var client = new AmazonSimpleEmailServiceClient(region); try { client.SendEmail(request); } catch (Exception ex) { //TODO: logger. throw; } finally { email.Dispose(); client.Dispose(); } 

还需要使用以下权限在Iam中为您的用户设置策略:

 { "Version": "2012-10-17", "Statement": [ { "Sid": "---------", "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": [ "*" ] } ] } 

并记得在应用程序或网页configuration中添加亚马逊设置:

  <add key="AWSAccessKey" value="-----------------"/> <add key="AWSSecretKey" value="-----------------"/> 

我希望能帮助其他人。 谢谢!