2010-11-22 12 views
6

मैं कोड का उपयोग कर उपयोगकर्ता बनाने की कोशिश कर रहा हूं। मेरे पास निम्नलिखित है जो उपयोगकर्ता को बनाया गया है। हालांकि यह उपयोगकर्ता को यह ईमेल नहीं भेजता है कि खाता बनाया गया है। मैं उसे कैसे कर सकता हूँ?प्रोग्रामेटिक रूप से ड्रूपल उपयोगकर्ता बनाते समय मैं एक ईमेल अधिसूचना कैसे भेजूं?

$newUser = array(
    'name' => 'username', 
    'pass' => 'password', // note: do not md5 the password 
    'mail' => 'email address', 
    'status' => 1, 
    'init' => 'email address' 
);   
user_save(null, $newUser); 
+0

उपयोगकर्ता मैन्युअल रूप से बनाने का प्रयास करें, क्या यह एक ई-मेल भेजता है? –

+0

यदि मैं "नए खाते के उपयोगकर्ता को सूचित करें" पर क्लिक करता हूं तो मुझे एक ईमेल प्राप्त होता है। – Will

उत्तर

-2

आप Rules इस्तेमाल कर सकते हैं: http://drupal.org/project/user_register_notify

यहाँ यह सेट करने के तरीके के बारे में निर्देश हैं। जब उपयोगकर्ता बनाया जाता है तो आप निकालने के लिए एक क्रिया जोड़ सकते हैं।

1

यदि आप नकल करना चाहते हैं कि ड्रूपल कोर कैसे संभालता है, तो user_register_submit() पर एक नज़र डालें। यह वह फ़ंक्शन है जो ऊपर वर्णित चेकबॉक्स पर प्रतिक्रिया करता है, और यदि अधिसूचनाएं वांछित हैं, तो सहेजे गए उपयोगकर्ता ऑब्जेक्ट को _user_mail_notify() में पास कर देता है, जो संदेश भेजने को संभालता है।

28

आप ड्रूपल कोर के "उपयोगकर्ता" मॉड्यूल से मानक _user_mail_notify() फ़ंक्शन का उपयोग कर सकते हैं।

/* @param $op 
* The operation being performed on the account. Possible values: 
* - 'register_admin_created': Welcome message for user created by the admin. 
* - 'register_no_approval_required': Welcome message when user 
*  self-registers. 
* - 'register_pending_approval': Welcome message, user pending admin 
*  approval. 
* - 'password_reset': Password recovery request. 
* - 'status_activated': Account activated. 
* - 'status_blocked': Account blocked. 
* - 'cancel_confirm': Account cancellation request. 
* - 'status_canceled': Account canceled.*/ 
+1

उपयोगकर्ता_सेव का उपयोग करते समय '_user_mail_notify' को आमंत्रित नहीं किया जाता है ?? हालांकि Drupal 7 में –

0

ऊपर:

function YOURMODULE_mail($key, &$message, $params) { 

    drupal_set_message('email test'); 

    switch ($key) { 
    case 'mymail': 
     // Set headers etc 
     $message['to'] = '[email protected]'; 
     $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() फ़ंक्शन का उपयोग

// Create user. 
    $new_user = array(
     'name' => $username, 
     'pass' => $password, 
     'mail' => $email, 
     'status' => 1, 
     'init' => $email, 
     'roles' => array(DRUPAL_AUTHENTICATED_RID => TRUE), 
    ); 
    $account = user_save(NULL, $new_user); 
    // Set operation. 
    $op = 'register_no_approval_required'; 
    // Send an email. 
    _user_mail_notify($op, $account); 

$ सेशन के विभिन्न मान रहे हैं जवाब बहुत ज्यादा एक ही बात करते हैं, बी विभिन्न बिंदुओं पर श्रृंखला में कूदो; कुछ को अतिरिक्त मॉड्यूल की आवश्यकता होती है; और कुछ सिस्टम रूपों का जिक्र करते हैं।

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

मैं _user_mail_notify() विधि का उपयोग करने और आपके इच्छित ऑपरेशन को पास करने का विकल्प चुनूंगा (register_pending_approval, register_no_approval_required, आदि)। यह आपको श्रृंखला में इतना कम रखता है कि आप अतिरिक्त मॉड्यूल पर भरोसा नहीं कर रहे हैं, लेकिन पर्याप्त है कि आप ड्रूपल पंजीकरण तर्क में टैप कर रहे हैं।

0

मानक तरीका आपके कोड को थोड़ा सा बदल सकता है, इस तरह (उपयोगकर्ता_सेव से बदलें और बाकी जोड़ें);

$account = user_save('', $newUser); //the first parameter is left blank so a new user is created 

    // If you want to send the welcome email, use the following code 
    // Manually set the password so it appears in the e-mail. 
    $account->password = $newUser['pass']; 

    // Send the e-mail through the user module. 
    drupal_mail('user', 'register_no_approval_required', 
    $email, NULL, array('account' => $account), variable_get('site_mail', '[email protected]')); 
संबंधित मुद्दे