これが私の機能である場合:
<?php
//dsm($query);
function customstatsB_menu() {
$items['customstatsB'] = array(
'title' => 'Maestros Inactivos + email',
'page callback' => 'customstatsB_all',
'access arguments' => array('access customstatsB content'),
'type' => MENU_CALLBACK
);
return $items;
}
/**
* Valid permissions for this module
* @return array An array of valid permissions for the customstats module
* No repetir permisos, este es únicamente un modulo, y cada query NO necesita permisos. PERMISOS A NIVEL MODULE x ROL.
*/
function customstatsB_perm() {
return array('access customstatsB content');
} // function customstats_perm()
//return array('access customstats content', 'administer customstats');
function customstatsB_all() {
/**
* MAESTROS INACTIVOS
*/
$query = "
SELECT name, status, rid, mail
FROM users
JOIN users_roles ON users.uid = users_roles.uid
WHERE mail NOT LIKE '%@hotmail.com'
AND users_roles.rid =6
AND users.status =0
";
// get the links (no range limit here)
$queryResult = db_query($query);
while ($links = db_fetch_object($queryResult)) {
//$page_content .= l($links->name, 'node/'.$links->mail) . '<br />';
$page_content .=
l($links->name, 'mailto:'.$links->mail) . '<br />';
}
// check to see if there was any content before
// returning the page
if ($page_content == '') {
// let the user know there is no content to show
$page_content = "No existe información para mostrar.";
}
return $page_content;
}
return array('access customstatsB content', 'administer customstatsB');
/**
* Email configs
*/
function customstatsB_mail($key, &$message, $params)
{
$params = array(
'subject' => t('SQL Results Tester'),
'body' => t("Body of the email goes here"),
);
drupal_mail("customstatsB", "customstatsB_normal_mail", "[email protected]", language_default(), $params, "[email protected]");
drupal_mail("customstatsB", "customstatsB_html_mail", "[email protected]", language_default(), $params, "[email protected]");
}
$language = $message['language'];
switch ($key)
{
case 'customstats_normal_mail':
$message['subject'] = t($params['subject'], $var, $language->language);
$message['body'][] = $params['body'];
break;
case 'customstats_html_mail':
$message['subject'] = t($params['subject'], $var, $language->language);
$body = "<html><body>
<h2>HTML Email Sample with Drupal</h2>
<hr /><br /><br />
{$params['body']}
</body></html>";
$message['body'][] = $body;
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
break;
}
}
そして、hook_mailとdrupal_mailを使用してメールを送信していますが、クエリ結果をメールの本文に挿入するにはどうすればよいですか?
また、私はhook_menuを介してpagestatbacks customstats1からcustomstats15を作成しました。ユーザーが各ページに個別にアクセスしたときに個別のメールを送信する必要があります。私はいくつかのチュートリアルを読みましたが、これを行うことができませんでした。
よろしくお願いします。
'body'パラメータを指定するには、hook_mail()を呼び出す必要があります。 2つの手順ですが、十分に文書化されているため、少し混乱します。 http://api.drupal.org/api/drupal/includes%21mail.inc/function/drupal_mail/6
上記のリンクから「example_notify()」と「example_mail()」を参照してください。
あなたの場合、あなたはhook_mailの呼び出しの外でdrupal_mailを呼び出す必要があります。例については、以下を参照してください。 drupal_mailを呼び出すときに$ paramのように本文を渡すことも、hook_mailを呼び出すときに本文を編集することもできます。
誰かがそのページにアクセスするといつでもメールが送信されるため、これは最良の例ではありませんが、どこからdrupal_mailを呼び出そうとしているかはわかりません。
$query = "
SELECT uid
FROM users
JOIN users_roles ON users.uid = users_roles.uid
WHERE mail NOT LIKE '%@mail.com'
AND users_roles.rid =6
AND users.status =0
";
// get the links (no range limit here)
$queryResult = db_query($query);
while ($links = db_fetch_object($queryResult)) {
$account = user_load($links->uid);
$body = t('Message for %name', array('%name' => $links->name));
$subject = t('New email!');
$params = array('body' => $body, 'subject' => $subject);
drupal_mail('customstats', 'html_mail', $account->mail, user_preferred_language($account), $params);
$page_content .= l($account->name, 'mailto:'.$account->mail) . '<br />';
}
if ($page_content == '') {
$page_content = "No existe información para mostrar.";
}
return $page_content;
}