带有GMail的AWS SES(仅发送)

时间:2019-07-05 08:55:34

标签: amazon-web-services email smtp gmail amazon-ses

我们的企业将G Suite用于其电子邮件。目前,我们有大量使用.Net Core代码中的MailKit发送的自动电子邮件。直到昨天为止,它一直运行良好,我们不得不一次性发送大量电子邮件(大约600封)。成功发送了大约60封电子邮件,但其余所有都失败了,并从Gmail返回了以下错误:

  

4.7.0 Temporary System Problem. Try again later (10). i4sm4226208wrr.17 - gsmtp

我相信Gmail告诉我它已超载:https://stackoverflow.com/a/39108563/5392786

我猜想Google对您可以发送多少电子邮件有限制?

我们的许多基础架构都在AWS上,因此我考虑过使用AWS SES来处理我们的自动电子邮件。这是可行的选择吗?

我仍然希望其余业务能够继续使用Gmail作为其电子邮件客户端。是否可以将AWS SES与Gmail并行使用,以从代码发送电子邮件(使用AWS开发工具包),但保持接收电子邮件不变(即SES与接收或处理传入电子邮件没有任何关系,只是从代码告诉我时发送电子邮件)?

编辑 这是我用来发送电子邮件的代码:

public async Task SendEmail(MimeMessage message)
{
    var certificiate = new X509Certificate2("certificate.p12", "notasecret", X509KeyStorageFlags.Exportable);
    var credentials = new ServiceAccountCredential(
        new ServiceAccountCredential.Initializer("automatedemails@automatedemails-######.iam.gserviceaccount.com")
        {
            Scopes = new[] { GmailService.Scope.MailGoogleCom },
            User = ((MailboxAddress)message.From.First()).Address
        }.FromCertificate(certificiate));

    if (!await credentials.RequestAccessTokenAsync(new CancellationToken()))
    {
        throw new ApplicationException("Error requesting access token for Gmail authentication");
    }

    using (var client = new SmtpClient())
    {
        client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);

        var oauth2 = new SaslMechanismOAuth2(credentials.User, credentials.Token.AccessToken);
        client.Authenticate(oauth2);

        await client.SendAsync(message);
        client.Disconnect(true);
    }
}

为每封电子邮件运行。我想知道是否是因为我要打开和关闭每封电子邮件的连接?

1 个答案:

答案 0 :(得分:1)

是的,您可以将SES用作其他发件人。除非您对此进行专门设置​​,否则传入的电子邮件将保持不变,并且会像往常一样运行。

实际上,您甚至可以让一个应用程序使用gsuite发送电子邮件,第二个应用程序从SES发送电子邮件,并且所有用户都仍在使用gsuite发送和接收电子邮件,并且仍然可以正常工作。