Me gustaría utilizar el sistema de correo electrónico de Drupal para enviar un correo electrónico mediante programación desde mi módulo personalizado. ¿Es eso posible?
Me gustaría utilizar el sistema de correo electrónico de Drupal para enviar un correo electrónico mediante programación desde mi módulo personalizado. ¿Es eso posible?
Respuestas:
Usando hook_mail y drupal_mail puedes crear y enviar un correo electrónico.
Implemente un correo electrónico use 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;
}
}
Para enviar un correo use drupal_mail:
drupal_mail($module, $key, $to, $language, $params = array('username' => 'John Potato'), $from = NULL, $send = TRUE)
Obviamente reemplace los parámetros: $ key debería ser igual a 'mymail'
Un correo electrónico se envía en unos pocos pasos:
$message['to']
está codificado foo@bar.com
. Omita esto y el mensaje se enviará al destinatario que se especifica cuando drupal_mail()
se llama.
Si desea una forma más sencilla de enviar correos electrónicos, consulte Correo simple ; es un módulo en el que estoy trabajando para hacer que el envío de correos electrónicos con Drupal 7+ sea mucho más fácil, y no requiere implementaciones de gancho adicionales ni conocimiento de MailSystem. Enviar un correo electrónico es tan simple como:
simple_mail_send($from, $to, $subject, $message);
Puede utilizar una forma más sencilla de enviar correos electrónicos, verifique el sistema de correo ; Es un módulo.
<?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.
}
?>
Puede usar este código en un gancho de su elección dentro de su módulo personalizado:
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;
}
}
Entonces puede usar la función anterior de esta manera:
$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');