从ASP.net Core MVC 2应用程序发送Amazon Simple Email

时间:2018-04-14 19:03:03

标签: asp.net-core-mvc amazon-ses asp.net-core-mvc-2.0

我有一个包含许多项目的解决方案.1使用Amazon SES发送电子邮件的业务服务项目。 1个连接到业务服务项目的ASP.net MVC 5应用程序。

解决方案中有一些MVC 5项目 - 它们都发送电子邮件。每个必须在Web配置中包含AWS设置 - 如下所示:

<add key="AWSProfileName" value="myprofile" />
<add key="AWSProfilesLocation" value="C:\AWS\mycredentials\creds.txt" />
<add key="AWSRegion" value="eu-west-1" />

这很好用。

然而,在.net Core MVC 2应用程序中,我不断收到此错误:

System.IO.FileNotFoundException:&#39;无法加载文件或程序集&#39; AWSSDK.SimpleEmail,Version = 3.3.0.0,Culture = neutral,PublicKeyToken = 885c .......&#39 ;。系统找不到指定的文件。&#39;

我认为这是因为它无法找到上述设置。由于.net核心应用程序没有web.config我认为它在appconfig.json中查找这些内容

我在appsettings.json中找到了ProfileName和Region的示例 - 但没有找到ProfilesLocation:

https://aws.amazon.com/blogs/developer/configuring-aws-sdk-with-net-core/

所以我试过这个

"AWS": {
    "Profile": "myprofile",
    "Region": "eu-west-1",
    "ProfilesLocation": "C:\\AWS\\mycredentials\\creds.txt"
}

但我一直得到同样的错误。如何从这个.net核心mvc 2应用程序中获取AWS.SimpleEmail?

感谢。

1 个答案:

答案 0 :(得分:1)

好的,对于新来者来说,这就是您获取AWS服务以使用appsettings.json的方式 在Startup.cs

services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); 
services.AddAWSService<IAmazonSimpleEmailService>();

确保将AWS配置添加到应用设置

"AWS": { "Profile": "profileName", "Region": "us-east-1" }

最后,为了在您的AWS服务中使用上述配置,您必须将带有Dependency Injection的服务添加到您的类中并使用它 例如,使用EmailSender类中的SimpleEmailService发送电子邮件:

public class EmailSender : IEmailSender 
{ 
   IAmazonSimpleEmailService _SES; 
   public EmailSender(IAmazonSimpleEmailService SES) 
   { 
      _SES= SES; 
   }

然后在函数中调用它,不要使用

AmazonSimpleEmailServiceClient

但是使用服务

_SES.SendEmailAsync(sendRequest);