使用 Swift Mailer 使用 Gmail 配置中的 "setFrom" 名称

Take "setFrom" name as in Gmail configuration using Swift Mailer

我在 Symfony 项目中使用 Swiftmailer 发送电子邮件。

$msg = (new \Swift_Message("Subject"))
            ->setFrom('xxx123@gmail.com')
            ->setTo('yyy@gmail.com')
            ->setBody($mailContent);

在收到的邮件中,发件人的姓名类似于xxx123。但是此电子邮件 ID 在其配置中的名称是 XXX YYY.

我可以用,

->setFrom('xxx123@gmail.com' => 'XXX YYY')

但是,我不想直接在代码中设置名称,因为它可能会更改为其他名称,例如 YYY ZZZ.

我怎样才能做到这一点?提前致谢!!

您可以使用此代码:

$fromEmail = "xxx123@gmail.com";
$fromName = "Sender Name";

$msg = (new \Swift_Message("Subject"))
        ->setFrom([$fromEmail => $fromName])
        ->setTo('yyy@gmail.com')
        ->setBody($mailContent);

如果您只输入电子邮件,代码将从电子邮件中删除姓名,直到@。在你的情况下是:xxx123@gmail.com

发件人姓名始终设置在每封邮件的 header 中。所以 header 可以由任何电子邮件客户端设置。在这种情况下,您的 SwiftMailer 也是电子邮件客户端。

您的电子邮件服务器可以重写 header,但仅限于特定情况。像 Gmail 一样,将您在帐户设置中未验证的所有电子邮件地址重写为您的基本电子邮件地址。

如果您需要从 Gmail 帐户中获取您的发件人姓名,您可以使用 Gmail-API。使用 OAuth 验证您的应用程序并将 GET 请求发送到 url:

https://www.googleapis.com/gmail/v1/users/me/settings/sendAs/YOUR_EMAIL_ADDRESS

您将收到 JSON 这样的:

{
 "sendAsEmail": "YOUR_EMAIL_ADDRESS",
 "displayName": "SENDER NAME THAT YOU NEED",
 "replyToAddress": "",
 "signature": "Your standard signature for emails created by Gmail in browser",
 "isPrimary": true,
 "isDefault": true
}

有关此请求的 Google API 的更多信息,您可以在此处找到:https://developers.google.com/gmail/api/v1/reference/users/settings/sendAs/get