এইচটিএমএল ইমেল কীভাবে প্রেরণ করবেন


25

আমি একটি সাধারণ মডিউল তৈরি করছি যা আমাদের ওয়েবসাইটে ডিলের জন্য ব্যবহারকারীদের এইচটিএমএল ইমেল প্রেরণ করবে।

আমি অনেক অনুসন্ধান করেছি, তবে দ্রুপালের জন্য সঠিক সমাধান খুঁজে পাচ্ছি না। এখন আমি মেলগুলি পাঠাতে পারি তবে সাধারণ পাঠ্য।

ড্রুপাল 7 এ এইচটিএমএল ইমেলগুলি প্রেরণে ধাপে ধাপে কী পদ্ধতি?

function example_form_submit( $form,&$form_state) {
    $friend_email=$form_state['values']['friend_email'];
    $mailto =$friend_email;  //gift to a friend
    $mailfrom ='no-reply@example.com';
    $subject = "another message for  HTML email from example.com";
    $body="<h2 style='font-size:28px;color:red;'>Hello EMAIL, i here i want to be <b>bolded</b></h2>";
    if (drupal_mail('example', 'send_gift', $mailto, language_default(),$params,$mailfrom,TRUE)) {
        drupal_set_message(t('Your gift was sent successfully!!!'));
    }
    else {
        drupal_set_message(t('<font color="red">Error occured while sending your mail!!!</font>'));
    }


/****hook_mail*/
function example_mail($key,&$message,$params) {
    $language = $message['language'];
    switch ($key) {
        case 'send_gift':
            $message['subject']=t($params['subject'], $var, $language->language);
            $message['body'][]=$params['body'];
            $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
        break;
    }
}

আপনি পুরো এইচটিএমএল পৃষ্ঠাটি পাস করছেন না
গুডস্পিপয়েন্টি 3

উত্তর:


22

জিওফের মতো উল্লেখ করা হয়েছে মাইম মেল মডিউলটি ব্যবহার করার একটি বিকল্প হতে পারে তবে আপনি কিছু কাস্টম মডিউলটি অতিরিক্ত কিছু কোড সহ এইচটিএমএল ইমেলগুলি প্রেরণ করতে সক্ষম করতে পারেন। সংক্ষেপে আপনাকে mail_systemভেরিয়েবলটি পরিবর্তন করতে হবে এবং আপনার নিজের প্রয়োগটি লিখতে হবে MailSystemInterface। তার একটি উদাহরণ নিম্নলিখিত কোড।

'Mymodule.install' এর ভিতরে:

function mymodule_enable() {
  $current = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
  $addition = array('mymodule' => 'MymoduleMailSystem');
  variable_set('mail_system', array_merge($current, $addition));
}

function mymodule_disable() {
  $mail_system = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
  unset($mail_system['mymodule']);
  variable_set('mail_system', $mail_system);
}

'মাইমডিউল.মডিউল' এর ভিতরে:

class MymoduleMailSystem extends DefaultMailSystem {
  public function format(array $message) {
    $message['body'] = implode("\n\n", $message['body']);
    $message['body'] = drupal_wrap_mail($message['body']);
    return $message;
  }
}

আপনি আপনার প্রকৃত মডিউলটির নামের সাথে মাইমডিউল দৃষ্টান্তগুলি প্রতিস্থাপন করতে হবে এবং তারপরে পরিবর্তনগুলি পেতে আপনার মডিউলটিকে অক্ষম করতে এবং পুনরায় সক্ষম করতে হবে যার পরে জিনিসগুলি কাজ করা উচিত। একটি সম্পূর্ণ উদাহরণের জন্য আপনি আমার উত্তর এখানে পরীক্ষা করতে পারেন । অতিরিক্তভাবে drupal.org- এ এই পৃষ্ঠাটি সেখান থেকেই মূলত আমি সমস্ত তথ্য পেয়েছি।


2
আমি আপনার নির্দেশাবলী অনুসরণ করেছি + আপনি যে পুরো উদাহরণ দিয়েছেন তা এখন সবকিছুই কাজ করছে ... আপনাকে অনেক ধন্যবাদ।
mrcniceguy

7

মাইম মেল মডিউলটি আপনি যা খুঁজছেন তা প্রায় অবশ্যই।

এটি একটি মাইম মেল উপাদান মডিউল (অন্যান্য মডিউল দ্বারা ব্যবহারের জন্য)।

  • এটি ব্যবহারকারীদের এইচটিএমএল ইমেল পাওয়ার অনুমতি দেয় এবং অন্যান্য মডিউল দ্বারা এটি ব্যবহার করা যায়। মেল কার্যকারিতা একটি এইচটিএমএল বার্তা বডি গ্রহণ করে, মাইম এন্ডকোড করে এটি প্রেরণ করে।
  • যদি এইচটিএমএল গ্রাফিক্স এম্বেড করে থাকে তবে এই গ্রাফিকগুলি মাইম-এনকোডেড থাকে এবং একটি বার্তা সংযুক্তি হিসাবে অন্তর্ভুক্ত থাকে।
  • আপনার থিমের স্টাইলশিট ফাইলগুলিকে কোনও থিমযোগ্য HTML ম্যাসেজ ফর্ম্যাটে অন্তর্ভুক্ত করে আপনার সাইটের স্টাইলটি গ্রহণ করে
  • যদি প্রাপকের অগ্রাধিকার পাওয়া যায় এবং তারা প্লেইন টেক্সট পছন্দ করে, এইচটিএমএল সরল পাঠ্যে রূপান্তরিত হবে এবং সে হিসাবে প্রেরণ করা হবে। অন্যথায়, ইমেলটি একটি প্লেটেক্সট বিকল্প সহ থিমযোগ্য HTML এ প্রেরণ করা হবে।
  • আপনাকে একটি নির্দিষ্ট মেলকি সহ থিম বার্তাগুলি মঞ্জুরি দেয়।
  • সিএসএস শৈলীগুলিকে ইনলাইন শৈলীর বৈশিষ্ট্যে রূপান্তর করে।
  • এম্বেড থাকা চিত্র এবং সংযুক্তি সহ এইচটিএমএল ইমেল প্রেরণের জন্য সহজ সিস্টেম ক্রিয়া এবং বিধি বিধিগুলি সরবরাহ করে।

5
আমি মাইমেল মডিউল + মেল সিস্টেম ডাউনলোড করেছি ... আপনি দয়া করে দয়া করে উপরের কোড হিসাবে আমার মডিউলে মাইমেল ফাংশনটি কল করার জন্য ব্যাখ্যা করবেন।
mrcniceguy

3

আপনি সুইফট মেলার মডিউলটিও দেখতে চাইতে পারেন। এটি আপনাকে ইনলাইন এবং নিয়মিত সংযুক্তি উভয় (যেমন চিত্র বা ফাইল) সহ এইচটিএমএল ইমেলগুলি প্রেরণ করতে দেয়। তদতিরিক্ত, এটি HTML ই-মেইলের উপর ভিত্তি করে প্লেইন সংস্করণ স্বয়ংক্রিয়ভাবে তৈরি করতে সক্ষম।

আপনি এটি দেখতে পারেন http://www.drupal.org/project/swiftmailer

রেকর্ডের জন্য: আমি মডিউলটির লেখক এবং রক্ষণাবেক্ষণকারী।


2

আপনি যথাযথ এইচটিএমএল প্রেরণ করছেন না, আপনি কেবল এইচ 1 ট্যাগ এবং বি ট্যাগ অন্তর্ভুক্ত করছেন, আপনাকে সম্ভবত সম্পূর্ণ এইচটিএমএল ট্যাগ অন্তর্ভুক্ত করতে হবে যা থেকে শুরু করে
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


আপনার মন্তব্যের জন্য thx, আমি @ দুশতা উদাহরণ ব্যবহার করেছি, আপনার পরামর্শ অনুসারে যথাযথ এইচটিএমএলও যুক্ত করেছি .. সবকিছুই কাজ করছে।
mrcniceguy

আমি নিশ্চিত যে কোনও ডক্টাইপ ব্যবহার এবং এইচটিএমএলকে সম্পূর্ণরূপে যাচাই করার কোনও ক্ষতি নেই তবে এটি ড্রুপালের মাধ্যমে এইচটিএমএল ইমেল প্রেরণের প্রয়োজন হয় না। আমি স্রেফ ডক্টাইপ এবং এইচটিএমএল ট্যাগটি সরিয়েছি এবং ইমেলটি Gmail এবং আউটলুকে ভালভাবে রেন্ডার হয়েছে। তবে , দুশতার স্থিতি স্থাপন করা খুব গুরুত্বপূর্ণ: আমি এই পরিবর্তনগুলি প্রয়োগ করার আগে আমি কোনও html তৈরি করতে সক্ষম হইনি।
two1ejack

2

উপরের উত্তরগুলির মধ্যে আমার পক্ষে কাজ করা হয়নি, সুতরাং আসল প্রশ্নটি এখানে নেওয়া।

প্রথমত, মাইম মেল মডিউলটি ইনস্টল এবং সক্ষম করুন । এটি কীভাবে ব্যবহার করতে হয় তার সম্পূর্ণ নির্দেশাবলীর জন্য আপনি README.txt পড়তে পারেন। আমি আপনাকে সংক্ষিপ্ত সংস্করণ দেব।

আপনার মডিউলটির জন্য আপনাকে মাইম মেল সক্ষম করতে হবে। আপনি এই ব্যবহার করতে পারেন hook_enableবা hook_update_Nexample.install:

function example_enable() {
  mailsystem_set(array(
    'example_send_gift' => 'MimeMailSystem',
  ));
}

আপনি যখন যাবেন তখন admin/config/system/mailsystemদেখবেন আপনার মডিউলটির জন্য একটি নতুন এন্ট্রি যুক্ত করা হয়েছে:

উদাহরণ মডিউল (সেন্ড_গিফট কী) শ্রেণি

MimeMailSystem

এখন আপনার text/htmlআর কোনও শিরোনাম নির্দিষ্ট করার দরকার নেই, মাইম মেল এটি যত্ন করে। সুতরাং আপনার এটির দরকার নেই:

$message['headers']['Content-Type'] = ...

আপনি যদি চান তবে $message['plaintext']আপনি কোনও নন-এইচটিএমএল বিকল্পের জন্য আপনার মেইলে যুক্ত করতে পারেন , তবে এটির প্রয়োজন নেই।

এটাই!

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