2010-09-16 10 views
8

जब मैं ईमेल भेजता हूं तो मुझे दो ईमेल मिलते हैं लेकिन इसे संबंधित ईमेल पर ईमेल भेजना चाहिए। लोपोपिंग समस्या? अपने for पाश -as यह है, इसके माध्यम से दूसरी बार सिर्फ के बाद से एक नया एक नहीं है पहले ईमेल के साथ चारों ओर खराब करता (की शुरुआत मेंलूपिंग phpmailer

$mail=new PHPMailer() 

:

$array_values = Array 
(
[0] => Array 
(
[0] => uname1 
[1] => fullname1 
[2] => email 1 


) 
[1] => Array 
(
[0] => uname2 
[1] => fullname2 
[2] => email 2 


) 
) 
$f=0; 
foreach($array_values as $mail_vars) 
{ 

//$mail->AddReplyTo($mail_vars[2],'RED'); 
$mail->AddAddress($mail_vars[2], 'sss'); 
$body .="<br>"; 
$body .= 'Username: '. $mail_vars[0]; 
$body .="<br>"; 
$body .= 'Password: '.$mail_vars[1]; 
$body .="<br>"; 
$mail->SetFrom('email', 'FULLNAME'); 
$mail->Subject = "NEW"; 
$mail->MsgHTML($body); 
//$mail->Send(); 

$f++; 
} 
+8

कृपया पहले कुछ बुनियादी डिबगिंग करें। आप 'mail_vars [4] 'का जिक्र कर रहे हैं जो सभी –

+0

पर मौजूद नहीं है' $ f ++; 'के बारे में? – RobertPitt

+0

मुझे खेद है कि यह $ mail_vars है [2] –

उत्तर

4

आप एक की जरूरत है बनाया था)।

जैसा कि आपने बताया कि शरीर को भी रीसेट करने की आवश्यकता है - असल में एक अलग var का उपयोग करना बहुत उपयोगी नहीं है - केवल MsgHTML पर सीधे आपूर्ति करने के लिए बेहतर है। चूंकि आपके ईमेल की सामग्री तुच्छ है, इसलिए आप डेटा का सादा-पाठ संस्करण भी भेजना चाहते हैं (मुझे लगता है कि आपके लक्षित प्राप्तकर्ता पर निर्भर करता है)। तो अद्यतन स्क्रिप्ट:

foreach($array_values as $mail_vars) 
{ 
    $mail=new PHPMailer(); 
    $mail->SetFrom('email', 'FULLNAME'); 
    $mail->AddAddress($mail_vars[2], 'sss'); 

    $mail->Subject = "NEW"; 

    $mail->MsgHTML("<br>\nUsername: ".$mail_vars[0]."<br>\nPassword: ".$mail_vars[1]."<br>"); 

    //$mail->Send(); 
    $f++; 
} 
+0

$ को अनदेखा करें, लूप –

+0

में शीर्ष पर रीसेट किया जाना चाहिए हां सच - स्पष्ट रूप से आपको यह पता लगाने के लिए पर्याप्त काम मिल गया है;) आप वास्तव में ' सभी {edited} – Rudu

+0

पर '$ body' var की आवश्यकता नहीं है यदि आप पासवर्ड भेज रहे हैं (या किसी भी प्रकार की वैयक्तिकृत सामग्री), तो आपको' $ मेल-> AltBody = '' कॉल करना चाहिए; '' मेल से पहले-> मेल-> MsgHTML() ', या आपके ईमेल के टेक्स्ट संस्करण में पहली प्राप्तकर्ता की सामग्री होगी। – Hobo

33

पीएचपी मेलर के स्रोत के माध्यम से देख रहे हैं, तो आप क्षेत्रों स्पष्ट करने की आवश्यकता होगी। कम से कम पता, शायद अधिक। यहां PHPMailer क्लास से कोड का अनुभाग है जिसमें स्पष्ट कार्य हैं। आप उन्हें देखने और उन्हें आज़माने के लिए स्वागत से अधिक हैं। यह स्पष्ट रूप से एक नई वस्तु को फिर से चालू करने का एक विकल्प है, जो स्मृति रिसाव का कारण बन सकता है या नहीं (इस पर निर्भर करता है कि आप कितने कॉल करते हैं)।

तो clearAddresses कोड को लागू करने:

$mail->Subject = "NEW"; 
    $mail->MsgHTML($body); 
    $mail->Send(); 
    $mail->ClearAddresses(); // should reset the To address and remove the first one from it. 

मैं वास्तविक कोड निकाल के रूप में आप सिर्फ विवरण और समारोह नाम की जरूरत है।

///////////////////////////////////////////////// 
    // CLASS METHODS, MESSAGE RESET 
    ///////////////////////////////////////////////// 

    /** 
    * Clears all recipients assigned in the TO array. Returns void. 
    * @return void 
    */ 
    public function ClearAddresses() { 
    } 

    /** 
    * Clears all recipients assigned in the CC array. Returns void. 
    * @return void 
    */ 
    public function ClearCCs() { 
    } 

    /** 
    * Clears all recipients assigned in the BCC array. Returns void. 
    * @return void 
    */ 
    public function ClearBCCs() { 
    } 

    /** 
    * Clears all recipients assigned in the ReplyTo array. Returns void. 
    * @return void 
    */ 
    public function ClearReplyTos() { 
    } 

    /** 
    * Clears all recipients assigned in the TO, CC and BCC 
    * array. Returns void. 
    * @return void 
    */ 
    public function ClearAllRecipients() { 
    } 

    /** 
    * Clears all previously set filesystem, string, and binary 
    * attachments. Returns void. 
    * @return void 
    */ 
    public function ClearAttachments() { 
    } 

    /** 
    * Clears all custom headers. Returns void. 
    * @return void 
    */ 
    public function ClearCustomHeaders() { 
    } 
+0

अच्छा काम, ब्रैड। वस्तु को पुनर्निर्माण करने के बजाय पते को साफ करने का यह सबसे अच्छा तरीका है। यह स्वीकार्य उत्तर होना चाहिए .. लेकिन केवल एक लड़का उभरा। – VKGS

2

यदि आप php मेलर कोड के माध्यम से देखने के लिए, वहाँ इस उपयोगी विधि ClearAllRecipients() आप सभी को एक बार के लिए, सीसी साफ़ करना चाहते हैं, और गुप्त प्रतिलिपि अगर है।

संबंधित मुद्दे