2012-01-08 17 views
6

मैं PHP से ईएमएल फाइलें उत्पन्न करने की कोशिश कर रहा हूं। क्या कोई पुस्तकालय है जो मुझे आसानी से बनाने की अनुमति देगी? मुझे इंटरनेट पर कुछ ActiveX घटक मिल सकते हैं लेकिन कुछ और पोर्टेबल का उपयोग करेंगे।PHP लाइब्रेरी ईएमएल ईमेल फाइलें उत्पन्न करने के लिए?

+0

क्या आप इसे स्क्रैच से बनाना चाहते हैं, या ईमेल बुद्धि इमेप फ़ंक्शंस पढ़ने के बाद? शायद imap_savebody() मदद कर सकते हैं - http://www.csschat.com/archive/index.php/t-3287.html? – BartekR

+0

हां मुझे इसे स्क्रैच से बनाने की ज़रूरत है। मेरे पास मूल रूप से एक ईमेल, शीर्षक, शरीर और अनुलग्नक है और इसके लिए ईएमएल बनाने की आवश्यकता है। –

उत्तर

8

मैं टेम्पलेट है, जहां प्रत्येक क्षेत्र एक TEMPLATE_<name> चर की जगह इस तरह का उपयोग करते हुए अपने आप को माइम संदेश के निर्माण समाप्त हो गया:

From: TEMPLATE_FROM_ADDRESS 
MIME-Version: 1.0 
To: TEMPLATE_TO_ADDRESS 
Subject: TEMPLATE_SUBJECT 
Content-Type: multipart/mixed; boundary="080107000800000609090108" 

This is a message with multiple parts in MIME format. 
--080107000800000609090108 
Content-Type: text/plain 

TEMPLATE_BODY 
--080107000800000609090108 
Content-Type: application/octet-stream;name="TEMPLATE_ATTACH_FILENAME" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment;filename="TEMPLATE_ATTACH_FILENAME" 

TEMPLATE_ATTACH_CONTENT 
--080107000800000609090108 

तब अंतिम संदेश बनाने काफी सरल है str_replace का उपयोग कर:

$content = file_get_contents("Template.eml"); 
$content = str_replace("TEMPLATE_FROM_ADDRESS", $fromEmail, $content); 
$content = str_replace("TEMPLATE_TO_ADDRESS", $toEmail, $content); 
// etc. for each template parameter 
// Also don't forget to base64_encode the attachment content; 
$content = str_replace("TEMPLATE_ATTACH_CONTENT", base64_encode($attachContent), $content); 

इस पोस्ट में फ़ाइल अनुलग्नक के बारे में अतिरिक्त जानकारी: Attachment name and file extension not working in email *.eml

4

मुझे लगता है कि आपको पुस्तकालय की आवश्यकता नहीं है। यह सिर्फ सादा पाठ (जैसे http://bitdaddys.com/example1.eml)

Date: Sat, 12 Aug 2006 14:25:25 -0400 
From: John Doe <[email protected]> 
Subject: BitDaddys Software 
To: [email protected] 

Dear BitDaddys Corp., 

We have added your software to our approved list. 

Thank you for your efforts. 

Sincerely, 
John Doe 
Some Server Company 

आप हेडर के साथ सिर्फ उत्पादन पाठ और fwrite का उपयोग कर इसे बचा सकता है। संलग्नक base64_encode() का उपयोग के लिए कहा गया है here

+3

महत्वपूर्ण बात यह है कि इसे एसएमटीपी अर्थशास्त्र का पालन करना चाहिए - यानी हेडर और शरीर के बीच प्रत्येक शीर्षलेख के अंत में सीआरएलएफ और एक खाली रेखा (सीआरएलएफ द्वारा समाप्त)। शरीर को 7 बिट एएससीआई (या मुद्रित मुद्रित) के रूप में एन्कोड किया जाना चाहिए। 'सेक्शन नंबर' द्वारा – symcbean

2

imap_savebody (imap लाइब्रेरी का हिस्सा http://us1.php.net/manual/en/function.imap-savebody.php) का उपयोग शून्य $ part_number के साथ करें। यह पूरे संदेश के साथ कोड की एक पंक्ति के साथ एक सुंदर .eml फ़ाइल बनाता है (शून्य $ part_number = सभी भागों ... दस्तावेज नहीं बल्कि काम करता है)।

अन्य दो समाधान ईमेल के प्रारूप पर निर्भर करते हैं (केवल एक अनुलग्नक और पहले समाधान में कोई HTML अनुभाग नहीं, और केवल दूसरे में टेक्स्ट ईमेल)।

imap_savebody एक परिपूर्ण .eml फ़ाइल बनाता है इससे कोई फर्क नहीं पड़ता कि आने वाले ईमेल का प्रारूप क्या है (जब तक यह निश्चित रूप से आरएफसी-शिकायत है)।

+0

का अर्थ है '$ part_number' पैरामीटर – redexp