使用Google Apps Engine和PHP将邮件发送到格式化的电子邮件地址

时间:2014-01-22 05:22:38

标签: php google-apps

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
];

有可能吗?

1 个答案:

答案 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支持以获取更多信息。正如我上面提到的,文档不是很好,并且根本没有说清楚什么是有效的。