使用Swift Mailer在Gmail配置中使用“ setFrom”名称

时间:2018-07-16 07:43:11

标签: php symfony swiftmailer

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

$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 之类的名称。

我该如何实现?在此先感谢!

2 个答案:

答案 0 :(得分:1)

发件人名称始终设置在每封邮件的标题中。因此标题可以由任何电子邮件客户端设置。在这种情况下,您的SwiftMailer还是电子邮件客户端。

您的电子邮件服务器可以重写标头,但仅在特定情况下可以。像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

答案 1 :(得分:0)

您可以使用以下代码:

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

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

如果仅放置电子邮件,则代码将从电子邮件中删除名称,直到@。您的情况是: xxx123 @ gmail.com