2011-12-19 10 views
9

पर नहीं जाते हैं, मैं IMAP प्रोटोकॉल के साथ मेल को नियंत्रित करता हूं। अब मैं phpmailer और SMTP प्रोटोकॉल के साथ मेल भेज रहा हूं। सबकुछ ठीक है लेकिन मेरे पास एक भयंकर चीज है। Phpmailer स्क्रिप्ट मेल के साथ कैसे भेजा जाए, "प्रेषित" IMAP फ़ोल्डर पर जाएं?phpmailer के साथ भेजे गए मेल मेरे सीआरएम ऑनलाइन सिस्टम में "प्रेषित" IMAP फ़ोल्डर

उत्तर

8

अब PHPMailer में एक विधि getSentMIMEMessage जो पूरे माइम स्ट्रिंग रिटर्न

$mail = new PHPMailer(); 
//code to handle phpmailer 
$result = $mail->Send(); 
if ($result) { 
    $mail_string = $mail->getSentMIMEMessage(); 
    imap_append($ImapStream, $folder, $mail_string, "\\Seen"); 
} 
+0

यह सही है। 13 जुलाई, 2012 से। इस चेंजलॉग को देखें: https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md#version-522-beta1-july-13-2012 भी http: // की जांच करने की आवश्यकता है php.net/manual/en/function.imap-append.php फ़ंक्शन imap_append() और $ फ़ोल्डर पैरामीटर, और http://php.net/manual/en/function.imap-open.php को समझने के लिए समझने के लिए $ ImapStream कैसे प्राप्त करें। – Cosmitar

1
  • आप IMAP मेजबान
  • IMAP मेजबान इन दो बिंदुओं की या तो सही नहीं हैं, तो सुविधा (बहुत कुछ करना है जो)

समर्थन करने के लिए की जरूरत है के माध्यम से अपने भेजे गए मेल के प्रसारण करने की आवश्यकता है , संक्षिप्त जवाब है "आप नहीं कर सकते"। संक्षेप में, वास्तव में यह मेल प्रदाता पर है, न कि आपका कोड।

जितना मैं एम $ से नफरत करता हूं, एक्सचेंज एक ऐसा स्थान है जहां उन्हें वास्तव में चीज़ें मिलती हैं - यदि आप एक एक्सचेंज सर्वर का उपयोग कर रहे हैं, तो यह सब आपके लिए संभाला जाता है।

4

अच्छा, यह बहुत मुश्किल है, लेकिन किया जा सकता है।

imap-append फ़ंक्शन पर एक नज़र डालें।
किसी IMAP स्ट्रीम संसाधन से कनेक्ट होने से, आप अपने मेल को अपने IMAP खाते के प्रेषित फ़ोल्डर में जोड़ने के लिए imap-append() का उपयोग कर सकते हैं।

लेकिन टिप्पणियों के माध्यम से पढ़ना आपको दिखाएगा कि यह पूरा करने के लिए थोड़ा कठिन है, लेकिन निश्चित रूप से असंभव नहीं है - आपको शायद अपने आप को कुछ कोड करने की आवश्यकता होगी, क्योंकि phpmailer बॉक्स के बाहर इसका समर्थन नहीं करता है (और कुछ खुद को बनाने के बजाय लागू करने में बहुत अधिक समय लगेगा)।

+0

ओह, वास्तव में है? फिर भी, मुझे लगता है कि यह एक समाधान है, यद्यपि एक काम के आसपास, तो मैं आपको इन स्वादिष्ट + 1s में से एक दे दूंगा। – DaveRandom

+0

प्रतिक्रिया के लिए धन्यवाद - मैं इसे आजमाउंगा। – piernik

+0

@ डेव रैंडम मैं आपके साथ सहमत हूं, यह सुंदर नहीं है, लेकिन ओपी के मुद्दे को हल करना संभव है; हालांकि मुझे आवश्यकता को समझ में नहीं आता है ... – Repox

13

मुझे ऐसा करने का आसान तरीका मिला। PHPmailer ईमेल को स्ट्रिंग के रूप में तैयार करता है - आपको बस इसे सही IMAP फ़ोल्डर में रखना है।

मैं (के बाद से वार्स संरक्षित हैं मैं उन्हें नहीं पहुँच सकते हैं) इस कोड के साथ PHPMailer वर्ग का विस्तार:

class PHPMailer_mine extends PHPMailer { 
public function get_mail_string() { 
    return $this->MIMEHeader.$this->MIMEBody; 
}} 

PHP कोड:

$mail= new PHPMailer_mine(); 
//code to handle phpmailer 
$result=$mail->Send(); 
if ($result) { 
    $mail_string=$mail->get_mail_string(); 
    imap_append($ImapStream, $folder, $mail_string, "\\Seen"); 
} 

यह अच्छी तरह से काम करता है।

+1

क्या आप $ ImapStream और $ फ़ोल्डर के मानों के लिए एक उदाहरण दे सकते हैं? मैं यह समझने में असमर्थ हूं कि $ फ़ोल्डर के लिए सही मूल्य क्या होना चाहिए, खासकर जब मेरे पास मेल सर्वर तक फ़ाइल स्तर तक पहुंच नहीं है (मैं जीमेल के साथ उपयोग कर रहा हूं)। – Zeeshan

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