require_once 'google/appengine/api/mail/Message.php';
use google\appengine\api\mail\Message;
// ...
$message_body = "...";
$mail_options = [
"sender" => "admin@example.com",
"to" => "user@example.com",
"subject" => "Your example.com account has been activated.",
"textBody" => $message_body
];
try {
$message = new Message($mail_options);
$message->send();
} catch (InvalidArgumentException $e) {
// ...
}
我已使用上述代码从Google Apps Engine发送电子邮件(用于PHP托管),并且它已成功运行。
但我需要将邮件发送到格式化的电子邮件地址,例如联系人姓名
我尝试使用以下代码,但它无法正常工作,我得到了异常
'InvalidArgumentException',消息'无效'到'收件人:'
$mail_options = [
"sender" => "admin@example.com",
"to" => "Contact Name <user@example.com>",
"subject" => "Your example.com account has been activated.",
"textBody" => $message_body
];
和
$mail_options = [
"sender" => "admin@example.com",
"to" => "Contact Name <user@example.com>",
"subject" => "Your example.com account has been activated.",
"textBody" => $message_body
];
有可能吗?
答案 0 :(得分:0)
看起来不像。带有实际括号的第二个示例通常在To
标题中完全有效。
我设法找到mail \ Message类的文档(他们的PHP API中的链接是错误的)但是它不是很好;由phpDocumentor自动生成,所以你真正得到的是函数/参数的概述以及开发人员可以放入的任何评论(在这种情况下并不多)。
https://developers.google.com/appengine/docs/php/refdocs/files/api.mail.Message
通过文档,所有收件人函数都以“电子邮件”作为参数。考虑到您的测试产生了无效的参数响应,看起来确实意味着纯粹是一个电子邮件地址。
解决方法可能是使用clearTo
方法清除收件人,然后使用To
手动添加addHeader
标头。不幸的是,他们严重限制了您可以添加的标头,To
不是其中之一。可能会阻止你绕过他们通过适当方法传递的地址所做的任何检查。
您可能需要尝试联系AppEngine支持以获取更多信息。正如我上面提到的,文档不是很好,并且根本没有说清楚什么是有效的。