Php 以“为例;setFrom";使用Swift Mailer的Gmail配置中的名称

Php 以“为例;setFrom";使用Swift Mailer的Gmail配置中的名称,php,symfony,swiftmailer,Php,Symfony,Swiftmailer,我正在使用Swiftmailer在Symfony项目中发送电子邮件 $msg = (new \Swift_Message("Subject")) ->setFrom('xxx123@gmail.com') ->setTo('yyy@gmail.com') ->setBody($mailContent); 在收到的电子邮件中,发件人的名称看起来像xxx123。但此电子邮件id在其配置中的名称是XXX-YYY

我正在使用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的其他名称

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

您可以使用以下代码:

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

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

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

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

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

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

您将收到如下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的更多信息,请参见此处:

Add variable->setFrom(['xxx123@gmail.com“=>$fromName])是否要使用配置文件中的发件人名称,如
parameters.yml
?或者你想要什么?@MichaelSivolobov我想使用提供的电子邮件的帐户名。是谁提供的,在哪里?发件人名称始终设置在每封邮件的标题中。因此,任何电子邮件客户端都可以设置标题。您的电子邮件服务器可以重写标题,但在特定情况下,如Gmail,可以重写您在帐户设置中未验证的所有电子邮件地址。是否可以不声明$fromName并使用电子邮件帐户的实际名称?@VinothKumar如果您使用SMPT,则可以不设置函数setFrom。它将自动运行。文档我正在使用SMPT,但在未提供setFrom()时无法发送邮件。