使用Swift_Message发送邮件时如何更改发件人的名称文本?

时间:2011-07-09 11:08:43

标签: php email swiftmailer

我正在使用SwiftMailer从我的应用程序发送电子邮件。

到目前为止一切正常。我现在需要能够动态更改发件人的文本。下面的代码片段和下一段应该有希望澄清我的意思。

目前,我的代码如下所示:

try{
   $message = Swift_Message::newInstance()
               ->setFrom($from)
               ->setTo($to)
               ->setSubject($subject)
               ->setBody($content);

   $mailer->send($message);
}catch (Exception $e) {
   // do something ...
}

$ from变量包含发件人的电子邮件地址 - 即sysmail@mydomain.com

但是,我想为不同的实体(例如论坛,群组等)发送每日摘要(例如),因此我希望能够将发件人的姓名文本设置为“论坛ABC成员每日摘要”,甚至虽然发件人仍然是sysmailer@mydomain.com。我注意到linkedin正在做类似的事情 - 他们在不同的发件人名下发送不同的摘要,即使发件人总是group-digests@linkedin.com。

sysmailer@mydomain.com的默认名称是“System Mailer”。顺便说一句,我使用Google Apps作为我的邮件服务提供商。设置不同是不切实际的 用户帐户,因为用户可以创建自己的论坛等。

有没有一种方法可以动态(即通过代码)指定发件人名称,尽管使用相同的发件人电子邮件地址?

2 个答案:

答案 0 :(得分:27)

你只需要将$作为数组传递。

$from = array($from_email => $from_name);

try{
   $message = Swift_Message::newInstance()
               ->setFrom($from)
               ->setTo($to)
               ->setSubject($subject)
               ->setBody($content);

   $mailer->send($message);
}catch (Exception $e) {
   // do something ...
}

您为每封邮件更改$ from_name。

希望它有所帮助!

答案 1 :(得分:2)

您也可以使用

$message = Swift_Message::newInstance()
           ->setFrom($email, $sender_name)
           ->setTo($to)
           ->setSubject($subject)
           ->setBody($content);