setTo([ 'person1@example.org', 'person2@example-6ren">
gpt4 book ai didi

php - 我可以在 SwiftMailer 中使用传统的电子邮件 "To"行吗?

转载 作者:可可西里 更新时间:2023-11-01 12:37:23 26 4
gpt4 key购买 nike

SwiftMailer 需要一个电子邮件地址数组,可能包括名称作为数组的值:

$message->setTo([
'person1@example.org',
'person2@example.net' => 'Person 2 Name',
'person3@example.org',
'person4@example.org',
'person5@example.org' => 'Person 5 Name'
]);

但我只有一行文本,形成一个标准的 To 标题:

person1@example.org, 'Person 2 Name' <person2@example.net>, person3@example.org, person4@example.org, 'Person 5 Name' <person5@example.org>

我可能可以破解一些东西来将 To header 转换为数组,但这感觉像是标准解决方案的问题,理想情况下来自吸收了 RFC 并且会接受奇怪但有效的人电子邮件地址,包括包含逗号和分号的地址。 SwiftMailer 本身有这个功能吗?如果是这样,我找不到它。

最佳答案

使用 SwiftMailer 的典型 ->setTo() API 的好处是地址验证。验证后,SwiftMailer 构建相应的 header 并添加它。

/**
* @var $message Swift_Message
*/
$message = $mailer->createMessage();

$message->setTo([
'person1@example.org',
'person2@example.net' => 'Person 2 Name',
'person3@example.org',
'person4@example.org',
'person5@example.org' => 'Person 5 Name'
]);

// String representation of corresponding To header
print_r((string)$message->getHeaders()->get('To'));

产生:

To: person1@example.org, Person 2 Name <person2@example.net>, person3@example.org, person4@example.org, Person 5 Name <person5@example.org>

可以使用 $message->getHeaders()->addTextHeader() 手动设置标题。

// Set To text-header manually
$message
->getHeaders()
->addTextHeader(
'To',
"person1@example.org, 'Person 2 Name' <person2@example.net>, person3@example.org, person4@example.org, 'Person 5 Name' <person5@example.org>"
);

// String representation of manually set header
print_r((string)$message->getHeaders()->get('To'));

这会产生相同的 header 。然而,我个人会尝试从 Swift 的验证中获益。

关于php - 我可以在 SwiftMailer 中使用传统的电子邮件 "To"行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com