【发布时间】:2011-05-04 00:57:40
【问题描述】:
我正在用 Drupal-7 编写一个模块,它可以动态地向客人发送一次性登录链接。一切正常,直到我将链接添加到$message 数组,当它阻塞时。如果我执行dpm($message),链接将出现在$message['body'] 数组中,正如我所料。如果我用 url() 函数注释掉该行,一切都会正常运行。为什么 php/Drupal 在这个愚蠢的小链接上卡住了?
/*
* Implement hook_mail().
*/
function rsvp_mail($key, &$message, $params) {
switch($key) {
case "send invite" :
$timestamp = REQUEST_TIME;
$account = $params['account'];
$message['subject'] = "And invitation for $account->name";
$message['body'][] = 'Some body text.';
$message['body'][] = 'Some more text!';
//here's the line that's breaking my brain:
$message['body'][] = url( 'http://wedding.juicywatermelon.com/rsvp/' . $account->uid . "/" . $timestamp . "/" . md5($account->pass . $timestamp) . "/" . 'user/' . $account->uid . '/edit/Wedding');
break;
}
}
ps - 为了简洁起见,我有代码在单独的函数调用中生成链接并将其移至钩子实现。然而,这对行为没有影响。
以及生成电子邮件的代码:
function rsvp_mail_send($account) {
$module = 'rsvp';
$from = "email@gmail.com";
$key = "send invite";
$params['account'] = $account;
$to = $account->mail;
$language = language_default();
$send = TRUE;
$result = drupal_mail($module, $key, $to, $language, $params, $from, $send);
}
【问题讨论】:
-
您在 Drupal 的日志或您的系统 PHP 日志中是否有任何错误?您是否使用 Devel 模块将邮件路由回日志(在此阶段这是一个好主意)?检查这些事情可能会更清楚地了解正在发生的事情以及所涉及的长链 PHP 函数中发生故障的确切位置。
-
奇怪!它真的不喜欢 $account 对象(它可以通过 - 我可以用 dpm() 确认)。我正在尝试在我生成的 url 中使用 $account obj 中的元素,但邮件系统不会接受这个。 :/ (我也可以通过 dpm() 很好地返回 url)
-
我可以将 $account 对象传递给 url() 函数并返回 ok,我可以将它传递给 $message 对象并一起发送,但我不能将对象传递给url() 并将其传递给 $message 对象。
-
您是否尝试过选择性地传入 $account 对象中的哪些字段?尽量不要传密码,只传uid,看看你有没有同样的经历。