प्रोग्राम ईमेल से कैसे भेजें?


45

मैं अपने कस्टम मॉड्यूल से प्रोग्राम भेजने के लिए Drupal के ईमेल सिस्टम का उपयोग करना चाहूंगा। क्या यह संभव है?


यह प्रश्न इससे जुड़ा है: drupal.stackexchange.com/questions/84268/…
pinueve

जवाबों:


63

हुक_मेल और ड्रुपल_मेल का उपयोग करके आप ई-मेल बना और भेज सकते हैं।

एक ई-मेल का उपयोग 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;
  }
}

एक मेल उपयोग drupal_mail भेजने के लिए:

drupal_mail($module, $key, $to, $language, $params = array('username' => 'John Potato'), $from = NULL, $send = TRUE)

स्पष्ट रूप से मापदंडों को बदलें: $ कुंजी को 'mymail' के बराबर होना चाहिए

कुछ चरणों में एक ई-मेल भेजा जाता है:

  1. drupal_mail को कहा जाता है
  2. Drupal ई-मेल बनाता है
  3. हुक_मेल को विवरण (कार्यान्वयन) के लिए कहा जाता है
  4. hook_mail_alter को कहा जाता है ताकि अन्य मॉड्यूल इसे संशोधित कर सकें
  5. drupal_send_mail को कहा जाता है

5
वह सही है, लेकिन थोड़ा स्पष्ट करने के लिए हुक_मेल आपको संरचना और मनमाने ढंग से कुंजी के आधार पर एक ईमेल प्रदान करता है जिसे आप परिभाषित करते हैं। drupal_mail () जिसे आप ईमेल भेजने के लिए कहते हैं। उस संरचना के लिए कुंजी पास करें जिसका आप उपयोग करना चाहते हैं। (और मॉड्यूल जो उस कुंजी का जवाब देता है)
जेसन स्मिथ

9
इस उदाहरण $message['to']में कठिन कोडित है foo@bar.com। इसे स्वीकार करें और संदेश प्राप्तकर्ता को भेजा जाएगा जो निर्दिष्ट किया drupal_mail()जाता है जब कहा जाता है।
pfrenssen

12

यदि आप ईमेल भेजने का एक सरल तरीका चाहते हैं, तो सरल मेल देखें ; यह एक ऐसा मॉड्यूल है जिस पर मैं ड्रुपल 7+ के साथ ईमेल भेजने को आसान बनाने के लिए काम कर रहा हूं, और इसके लिए किसी अतिरिक्त हुक कार्यान्वयन या डाक प्रणाली ज्ञान की आवश्यकता नहीं है। ईमेल भेजना उतना ही सरल है:

simple_mail_send($from, $to, $subject, $message);

... और यह Drupal 8 के साथ भी काम करता है, ठीक उसी एपीआई के साथ :)
जेरलिंग्लुगी

1

आप ईमेल भेजने का एक सरल तरीका, मेल सिस्टम की जांच कर सकते हैं ; यह एक मॉड्यूल है।

<?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.
}
?>

अच्छी तरह से काम।
WM

0

आप अपने कस्टम मॉड्यूल के भीतर अपनी पसंद के हुक में इस कोड का उपयोग कर सकते हैं:

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

तो आप इस तरह उपरोक्त समारोह का उपयोग कर सकते हैं:

        $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');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.