我们的企业将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);
}
}
为每封电子邮件运行。我想知道是否是因为我要打开和关闭每封电子邮件的连接?
答案 0 :(得分:1)
是的,您可以将SES用作其他发件人。除非您对此进行专门设置,否则传入的电子邮件将保持不变,并且会像往常一样运行。
实际上,您甚至可以让一个应用程序使用gsuite发送电子邮件,第二个应用程序从SES发送电子邮件,并且所有用户都仍在使用gsuite发送和接收电子邮件,并且仍然可以正常工作。