প্রোগ্রামিয়ালি কোনও ইমেল কীভাবে প্রেরণ করবেন?


45

আমি আমার কাস্টম মডিউল থেকে প্রোগ্রামিয়ালি ইমেল প্রেরণের জন্য দ্রুপালের ইমেল সিস্টেমটি ব্যবহার করতে চাই। এটা কি সম্ভব?


এই প্রশ্নের সাথে লিঙ্ক দেওয়া হয়েছে: drupal.stackexchange.com/questions/84268/…
পিনয়েভ করুন

উত্তর:


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)

স্পষ্টতই পরামিতিগুলি প্রতিস্থাপন করুন: $ কীটি 'মাইমেল' এর সমান হওয়া উচিত

কয়েকটি পদক্ষেপে একটি ইমেল প্রেরণ করা হয়:

  1. দ্রুপাল_মেল বলা হয়
  2. ড্রুপাল ই-মেইল তৈরি করে
  3. hook_mail নির্দিষ্টকরণ (বাস্তবায়ন) জন্য বলা হয়
  4. hook_mail_alter বলা হয় যাতে অন্য মডিউলগুলি এটি সংশোধন করতে পারে
  5. drupal_send_mail বলা হয়

5
তিনি ঠিক বলেছেন, তবে কিছুটা স্পষ্ট করতে হুক_মেল আপনাকে নির্ধারণ করা একটি স্বেচ্ছাসেবক কী এর উপর ভিত্তি করে একটি ইমেল গঠন এবং থিম করার একটি উপায় সরবরাহ করে। ড্রুপাল_মেল () আপনি যা ইমেল প্রেরণের জন্য কল করেন। আপনি যে কাঠামোটি ব্যবহার করতে চান তার জন্য কীটি পাস করুন। (এবং যে কীটির প্রতিক্রিয়া জানায় মডিউল)
জেসন স্মিথ

9
এই উদাহরণে $message['to']হার্ড কোড করা হয় foo@bar.com। এটি ছেড়ে দিন এবং বার্তা প্রাপকের কাছে প্রেরণ করা হবে যা কল করার সময় নির্দিষ্ট করা আছে drupal_mail()
pfrenssen

12

আপনি যদি ইমেল প্রেরণের সহজ উপায় চান তবে সিম্পল মেলটি দেখুন ; এটি একটি মডিউল যা আমি ড্রপাল 7+ এর সাথে ইমেলগুলি প্রেরণে আরও বেশি সহজ করার জন্য কাজ করছি এবং এটির জন্য কোনও অতিরিক্ত হুক বাস্তবায়ন বা মেলসিস্টেম জ্ঞানের প্রয়োজন নেই। ইমেল পাঠানো যেমন সহজ:

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

... এবং এটি ঠিক একই এপিআই এর সাথে দ্রুপাল 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.
}
?>

পুরোপুরি কাজ করে।
ডাব্লুএম

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');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.