嗨我将通过smtp发送一封包含zend邮件的正常电子邮件。它工作正常。 但是'from'必须但是fromemail应该是这样的:
$mail->setFrom('firt-studio@example-test.com', 'firt-studio@example-test.com');
我的目标是在电子邮件程序中有这样的东西:
"firt-studio@example-test.com" <firt-studio@example-test.com>
但我只看到这个:
<firt-studio@example-test.com>
或类似的东西
"firtstudio@example-test.com" <firt-studio@example-test.com>
结果:
"firtstudio@" <firt-studio@example-test.com>
我需要全名。如何?
答案 0 :(得分:1)
如果查看Zend_Mail,setFrom使用名为_formatAddress的内部函数来设置显示名称。功能如下:
/**
* Formats e-mail address
*
* @param string $email
* @param string $name
* @return string
*/
protected function _formatAddress($email, $name)
{
if ($name === '' || $name === null || $name === $email) {
return $email;
} else {
$encodedName = $this->_encodeHeader($name);
if ($encodedName === $name && strcspn($name, '()<>[]:;@\\,') != strlen($name)) {
$format = '"%s" <%s>';
} else {
$format = '%s <%s>';
}
return sprintf($format, $encodedName, $email);
}
}
如您所见,如果电子邮件和名称相同,则该功能仅返回电子邮件。以下是您可以尝试显示的一些内容:
$mailer->setFrom('firt-studio@example-test.com', 'Firt Studio');
会将其显示为Firt Studio
或者您可以编辑Zend_Mailer库中的_formatAddress函数以删除
|| $name === $email
条件,你会得到
firt-studio@example-test.com <firt-studio@example-test.com>
答案 1 :(得分:0)
如果名称与电子邮件地址完全相同,则Zend Mail不会写出该名称(请参阅Zend_Mail :: _ formatAddress)。
name属性(第二个参数)旨在成为电子邮件地址的通用名称。