Saya ingin menggunakan sistem email Drupal untuk secara terprogram mengirim email dari modul khusus saya. Apakah itu mungkin?
Saya ingin menggunakan sistem email Drupal untuk secara terprogram mengirim email dari modul khusus saya. Apakah itu mungkin?
Jawaban:
Menggunakan hook_mail dan drupal_mail Anda dapat membuat dan mengirim email.
Terapkan e-mail menggunakan hook_mail:
function MODULENAME_mail ($key, &$message, $params) {
switch ($key) {
case 'mymail':
// Set headers etc
$message['to'] = 'foo@bar.com';
$message['subject'] = t('Hello');
$message['body'][] = t('Hello @username,', array('@username' => $params['username']));
$message['body'][] = t('The main part of the message.');
break;
}
}
Untuk mengirim email gunakan drupal_mail:
drupal_mail($module, $key, $to, $language, $params = array('username' => 'John Potato'), $from = NULL, $send = TRUE)
Jelas ganti parameter: $ key harus sama dengan 'mymail'
Email dikirimkan dalam beberapa langkah:
$message['to']
ini kode sulit untuk foo@bar.com
. Abaikan ini dan pesan akan dikirim ke penerima yang ditentukan saat drupal_mail()
dipanggil.
Jika Anda ingin cara yang lebih sederhana untuk mengirim email, lihat Simple Mail ; ini adalah modul yang saya kerjakan untuk membuat pengiriman email dengan Drupal 7+ jauh lebih mudah, dan tidak memerlukan implementasi hook tambahan atau pengetahuan MailSystem. Mengirim surel semudah:
simple_mail_send($from, $to, $subject, $message);
Anda dapat menggunakan cara sederhana mengirim email, periksa mailsystem ; itu sebuah modul.
<?php
$my_module = 'foo';
$from = variable_get('system_mail', 'organization@example.com');
$message = array(
'id' => $my_module,
'from' => $from,
'to' => 'test@example.com',
'subject' => 'test',
'body' => 'test',
'headers' => array(
'From' => $from,
'Sender' => $from,
'Return-Path' => $from,
),
);
$system = drupal_mail_system($my_module, $my_mail_token);
if ($system->mail($message)) {
// Success.
}
else {
// Failure.
}
?>
Anda dapat menggunakan kode ini di hook pilihan Anda sendiri dalam modul khusus Anda:
function yourmodulename_mail($from = 'default_from', $to, $subject, $message) {
$my_module = 'yourmodulename';
$my_mail_token = microtime();
if ($from == 'default_from') {
// Change this to your own default 'from' email address.
$from = variable_get('system_mail', 'admin@yoursite.com');
}
$message = array(
'id' => $my_module . '_' . $my_mail_token,
'to' => $to,
'subject' => $subject,
'body' => array($message),
'headers' => array(
'From' => $from,
'Sender' => $from,
'Return-Path' => $from,
),
);
$system = drupal_mail_system($my_module, $my_mail_token);
$message = $system->format($message);
if ($system->mail($message)) {
return TRUE;
} else {
return FALSE;
}
}
Kemudian Anda dapat menggunakan fungsi di atas seperti ini:
$user = user_load($userid); // load a user using its uid
$usermail = (string) $user->mail; // load user email to send a mail to it OR you can specify an email here to which the email will be sent
customdraw_mail('default_from', $usermail, 'You Have Won a Draw -- this is the subject', 'Congrats! You have won a draw --this is the body');