HTML ईमेल कैसे भेजें


25

मैं एक सरल मॉड्यूल बना रहा हूं जो हमारी वेबसाइट में सौदों के लिए उपयोगकर्ताओं को HTML ईमेल भेजेगा।

मैंने बहुत खोज की है, लेकिन मुझे ड्रुपल के लिए उचित समाधान नहीं मिल रहा है। अब मैं मेल लेकिन सादे पाठ भेज सकते हैं।

Drupal 7 में HTML ईमेल भेजने के लिए चरण-दर-चरण प्रक्रिया क्या है?

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

आप पूर्ण HTML पृष्ठ
GoodSp33d

जवाबों:


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

अंदर 'mymodule.module':

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

आपको अपने वास्तविक मॉड्यूल के नाम के साथ mymodule इंस्टेंसेस को बदलना होगा, फिर अपने मॉड्यूल को वैरिएबल में बदलने के लिए अक्षम और फिर से सक्षम करना होगा जिसके बाद चीजें काम कर रही होनी चाहिए। एक पूर्ण उदाहरण के लिए आप यहां मेरे उत्तर की जांच कर सकते हैं । इसके अतिरिक्त यह पृष्ठ drupal.org पर है जहाँ से मुझे मूल रूप से सारी जानकारी मिली।


2
मैंने आपके निर्देशों का पालन किया + पूरा उदाहरण जो आपने दिया अब सब कुछ काम कर रहा है ... बहुत बहुत धन्यवाद।
mrcniceguy

7

माइम मेल मॉड्यूल लगभग निश्चित रूप से आप क्या देख रहे हैं।

यह एक माइम मेल घटक मॉड्यूल है (अन्य मॉड्यूल द्वारा उपयोग के लिए)।

  • यह उपयोगकर्ताओं को HTML ईमेल प्राप्त करने की अनुमति देता है और इसका उपयोग अन्य मॉड्यूल द्वारा किया जा सकता है। मेल कार्यक्षमता एक HTML संदेश निकाय को स्वीकार करती है, इसे माइम-एंडकोड करती है और भेजती है।
  • यदि HTML में ग्राफिक्स हैं, तो ये ग्राफिक्स MIME-एन्कोडेड हैं और संदेश अनुलग्नक के रूप में शामिल हैं।
  • अपने विषय की स्टाइलशीट फ़ाइलों को एक थीम योग्य HTML संदेश प्रारूप में शामिल करके अपनी साइट की शैली को स्वचालित रूप से अपनाता है
  • यदि प्राप्तकर्ता की वरीयता उपलब्ध है और वे प्लेनटेक्स्ट पसंद करते हैं, तो एचटीएमएल को सादे टेक्स्ट में बदल दिया जाएगा और जैसा कि भेजा गया है। अन्यथा, ईमेल को सादे HTML में प्लेटेक्स्ट विकल्प के साथ भेजा जाएगा।
  • आपको एक विशिष्ट मेलक के साथ संदेशों को थीम करने की अनुमति देता है।
  • सीएसएस शैलियों को इनलाइन शैली विशेषताओं में परिवर्तित करता है।
  • एम्बेडेड इमेज और अटैचमेंट के साथ HTML ईमेल भेजने के लिए सरल सिस्टम एक्शन और रूल्स एक्शन प्रदान करता है।

5
मैंने mimemail मॉड्यूल + मेल सिस्टम डाउनलोड किया है ... क्या आप कृपया ऊपर दिए गए कोड के रूप में मेरे मॉड्यूल को mimemail फ़ंक्शन को कॉल करने के लिए समझाने की कृपा करेंगे।
mrcniceguy

3

आप स्विफ्ट मेलर मॉड्यूल को भी देखना चाह सकते हैं। यह आपको इनलाइन और रेगुलर अटैचमेंट्स (जैसे इमेज या फाइल) के साथ HTML ई-मेल भेजने की सुविधा देता है। इसके अलावा, यह HTML ई-मेल के आधार पर सादे पाठ संस्करणों को स्वचालित रूप से जनरेट करने में भी सक्षम है।

आप इसे http://www.drupal.org/project/swiftmailer पर देख सकते हैं

रिकॉर्ड के लिए: मैं मॉड्यूल का लेखक और अनुचर हूं।


2

आप उचित HTML नहीं भेज रहे हैं, आप केवल H1 टैग और B टैग शामिल कर रहे हैं, आपको संभवतः पूर्ण HTML टैग शामिल करने के साथ-साथ शुरू करने की भी आवश्यकता है
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


उर टिप्पणी के लिए thx, मैं @Dooshta उदाहरण का इस्तेमाल किया, यू के रूप में उचित html भी जोड़ा सुझाव दिया है .. सब कुछ काम कर रहा है।
mrcniceguy

मुझे यकीन है कि एक doctype और पूरी तरह से HTML का सत्यापन करने में कोई बुराई नहीं है, लेकिन ड्रुपल के माध्यम से HTML ईमेल भेजने की आवश्यकता नहीं है। मैंने अभी doctype & html टैग हटा दिया है और ईमेल जीमेल और आउटलुक में अच्छी तरह से प्रस्तुत किया गया है। हालाँकि , Dooshta के स्थान को ठीक करना बहुत महत्वपूर्ण है: इससे पहले कि मैं उन परिवर्तनों को लागू करता मैं किसी भी HTML को उत्पन्न करने में सक्षम नहीं था।
211 बजे

2

उपर्युक्त उत्तरों में से कोई भी मेरे लिए काम नहीं करता है, इसलिए यहां मूल प्रश्न पर मेरी राय है।

सबसे पहले, माइम मेल मॉड्यूल को स्थापित और सक्षम करें । इसका उपयोग कैसे करें , इस बारे में पूर्ण निर्देशों के लिए आप README.txt को पढ़ सकते हैं । मैं आपको लघु संस्करण दूंगा।

आपको अपने मॉड्यूल के लिए माइम मेल को सक्षम करने की आवश्यकता है। आप इस का उपयोग कर सकते hook_enableया hook_update_Nमें example.install:

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

जब आप जाते हैं तो आप admin/config/system/mailsystemदेखेंगे कि आपके मॉड्यूल के लिए एक नई प्रविष्टि जोड़ी गई है:

उदाहरण मॉड्यूल (send_gift कुंजी) वर्ग

MimeMailSystem

अब आपको किसी भी text/htmlहेडर को निर्दिष्ट करने की आवश्यकता नहीं है, माइम मेल इस बात का ध्यान रखता है। तो आपको इसकी आवश्यकता नहीं है:

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

यदि आप चाहें, तो आप $message['plaintext']गैर-एचटीएमएल विकल्प के लिए अपने मेल में जोड़ सकते हैं , लेकिन इसकी आवश्यकता नहीं है।

बस!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.