使用 C# 使用 SMTP 时如何从 AWS SES 获取 MessageID

问题描述 投票:0回答:1
我把这个问题提出来是因为我花了两天的时间把答案放在一起才弄清楚这个问题。

我尝试接收 AWS 分配给电子邮件的 MessageID,以便我稍后可以使用 SNS/SQS 接收电子邮件反馈。并使用 System.Net.SmtpClient 响应成功的电子邮件无效。您仅在失败时收到异常代码。

AWS 将始终发送响应,但要获取成功消息,我需要合并 MailKit nuget 并使用 MessageSent 事件。

响应看起来像这样......“OK xxxxx-xxxxxx-xxxxxx-xxxxx”,其中 x 是新分配的 messageID。

c# amazon-web-services smtp amazon-ses
1个回答
0
投票
下面是发送电子邮件的最简单代码,使用我用来从成功响应中获取 messageID 的方法。我希望这可以节省人们很多时间!

只需使用 MailKit nuget 和以下代码:

using MailKit.Net.Smtp; using MailKit.Security; using MimeKit; namespace TestMail { internal class Program { static async Task Main(string[] args) { await SendMail(); } internal static async Task SendMail() { using (var mail = new MimeMessage()) { mail.From.Add(MailboxAddress.Parse("[email protected]")); mail.To.Add(MailboxAddress.Parse("[email protected]")); mail.Subject = "TEST"; mail.Body = new TextPart(MimeKit.Text.TextFormat.Html) { Text = "<P>Hello!</P>" }; string goodMessage = ""; using (var smtp = new SmtpClient()) { smtp.MessageSent += async (sender, args) => { goodMessage = args.Response; }; await smtp.ConnectAsync("email-smtp.us-east-1.amazonaws.com", 587, SecureSocketOptions.StartTls); await smtp.AuthenticateAsync("user", "password"); await smtp.SendAsync(mail); } Console.WriteLine("This is the messageID: " + goodMessage.Split(' ')[1]); } } } }
    
© www.soinside.com 2019 - 2024. All rights reserved.