asp.net 在C#中设置Amazon SES中的“发件人姓名”

gzszwxb4  于 2023-01-18  发布在  .NET
关注(0)|答案(2)|浏览(146)

我在ASP.net(核心)6应用程序中使用亚马逊SES从我自己的域发送电子邮件-效果很好。
我想更改“发件人姓名”,以便用户在其电子邮件客户端中看到“姓名”(例如“John Smith”或“公司名称”),而不是看到电子邮件地址。
这是Amazon提供的发送电子邮件的代码:

var sender = "Name alert-no-reply@example.com";
var emailMessage = BuildEmailHeaders(sender, to, cc, bcc, subject);

var emailBody = BuildEmailBody(body, isHtmlBody);
emailMessage.Body = emailBody.ToMessageBody();
return SendEmailAsync(emailMessage);

在sender变量中只使用email,就可以正常工作。
上面我已经尝试添加一个名字首先与一个空格作为推荐的这篇文章:https://kitefaster.com/2017/04/19/set-name-senderfromsource-amazon-ses/
但它返回的是500:
我也试过这个:

var sender = "Name<alert-no-reply@example.com>";

但它也会返回500
如何更改发件人姓名?
谢谢

0g0grzrc

0g0grzrc1#

我不确定SendEmailAsync()是如何定义的,我使用的是here描述的代码:

SmtpClient smtpClient = new() { ... };
MailMessage mailMessage = new ()
{
    From = new MailAddress("nobody@mydomain.com", "Johnny"),
    Subject = "this is a test",
    Body = "some very important email"
};

smtpClient.Send(mailMessage);

邮件显示是约翰尼发的
不用说,ASP.NET上的AWS文档已经过时了;但该示例在.NET 6和7中仍然有效

eeq64g8w

eeq64g8w2#

答案在Amazon提供的示例代码的另一部分中。
参见下面的“John Smith”-它在原始示例文件中只是空白。

private static MimeMessage BuildEmailHeaders(string from, IEnumerable<string> to, IReadOnlyCollection<string> cc, IReadOnlyCollection<string> bcc, string subject)
    {
        var message = new MimeMessage();
        //message.From.Add(new MailboxAddress(string.Empty, from));
        message.From.Add(new MailboxAddress("John Smith", from));

        foreach (var recipient in to)
        {
            message.To.Add(new MailboxAddress(string.Empty, recipient));
        }
        if (cc != null && cc.Any())
        {
            foreach (var recipient in cc)
            {
                message.Cc.Add(new MailboxAddress(string.Empty, recipient));
            }
        }
        if (bcc != null && bcc.Any())
        {
            foreach (var recipient in bcc)
            {
                message.Bcc.Add(new MailboxAddress(string.Empty, recipient));
            }
        }
        message.Subject = subject;
        return message;
    }

相关问题