2011-02-04 25 views
10

नीचे दिया गया कोड सही ढंग से एक ईमेल भेज रहा है लेकिन शरीर के लिए। मुझे संदेश के शरीर में एचटीएमएल दिखाने की ज़रूरत है और मैं इसे नहीं बना सकता। वेब में उदाहरण ईमेल :(PHP मेल: एचटीएमएल कैसे भेजें?

मैं अपने कोड कैसे ठीक कर सकता है शरीर में एचटीएमएल के साथ ईमेल भेजने के लिए भेज देंगे नहीं?

धन्यवाद एक टन!

<?php 

$to = '[email protected]'; 

$subject = 'I need to show html'; 

$from ='[email protected]'; 

$body = '<p style=color:red;>This text should be red</p>'; 

ini_set("sendmail_from", $from); 

$headers = "From: " . $from . "\r\nReply-To: " . $from . ""; 
    $headers .= "Content-type: text/html\r\n"; 
if (mail($to, $subject, $body, $headers)) { 

    echo("<p>Sent</p>"); 
} else { 
    echo("<p>Error...</p>"); 
} 

?> 
+0

+1 प्रश्न के लिए मैं इसी तरह सवाल था, लेकिन इस सूत्र जवाब यह (विभिन्न कोणों से) – Sam

उत्तर

16

उपयोग माई के लिए इस हेडर एल:

$header = "MIME-Version: 1.0\r\n"; 
$header .= "Content-type: text/html; charset: utf8\r\n"; 

और सामग्री/शरीर के लिए:

<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
... ... ... 

यह इनलाइन सीएसएस आदेशों का उपयोग करने के लिए महत्वपूर्ण है और इंटरफेस के लिए तालिकाओं का उपयोग करने के लिए recommanded। ऐसा मत करो: से HTML code with head and body

+0

धन्यवाद हेले, लेकिन हेडर में त्रुटि और शरीर में कोई एचटीएमएल नहीं :( – lleoun

+0

अपनी लाइन को भी इसमें बदलें। और आपके द्वारा खोले गए सभी टैग बंद करें। और 'टैग का उपयोग करें। '$ शीर्षलेख। =" से: "$ से।" \ r \ n रीप्ली-टू: "। $ से।" ";' – helle

+0

क्षमा करें, मुझे यह नहीं मिल रहा है: $ हेडर = "एमआईएम-संस्करण: 1.0 \ r \ n"; $ हेडर । = "सामग्री-प्रकार: टेक्स्ट/एचटीएमएल; अक्षरसेट: utf8 \ r \ n"; टेक्स्ट को पढ़ने के साथ ईमेल भेजता है जो कि महान है। लेकिन क्षेत्र में www-data दिखाया गया है .. मैं इसे कैसे ठीक कर सकता हूं एक बार यह हो जाने पर यह खत्म हो जाएगा। बहुत बहुत धन्यवाद – lleoun

1

मैं पाया यह अच्छी तरह से काम करता है!

Source

<?php 
//define the receiver of the email 
$to = '[email protected]'; 
//define the subject of the email 
$subject = 'Test HTML email'; 
//create a boundary string. It must be unique 
//so we use the MD5 algorithm to generate a random hash 
$random_hash = md5(date('r', time())); 
//define the headers we want passed. Note that they are separated with \r\n 
$headers = "From: [email protected]\r\nReply-To: [email protected]"; 
//add boundary string and mime type specification 
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\""; 
//define the body of the message. 
ob_start(); //Turn on output buffering 
?> 
--PHP-alt-<?php echo $random_hash; ?> 
Content-Type: text/plain; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit 

Hello World!!! 
This is simple text email message. 

--PHP-alt-<?php echo $random_hash; ?> 
Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit 

<h2>Hello World!</h2> 
<p>This is something with <b>HTML</b> formatting.</p> 

--PHP-alt-<?php echo $random_hash; ?>-- 
<? 
//copy current buffer contents into $message variable and delete current output buffer 
$message = ob_get_clean(); 
//send the email 
$mail_sent = @mail($to, $subject, $message, $headers); 
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent" : "Mail failed"; 
?> 
+0

मिले यह भी नहीं बल्कि मेरे मामले में भेजने, क्यूं कर? – lleoun

+0

मेल सेटअप सही है? क्या आप आईआईएस सर्वर पर हैं? – chrisjlee

+0

यह मेल कमांड पर निर्भर था। यह आदेश मौजूद है * एनआईक्स सिस्टम। –

-3

सरल जवाब डाल करने के लिए है

...

अपने मेल-शरीर में आप। एचटीएमएल ईमेल बुरा और कष्टप्रद हैं। कम से कम यदि कोई प्रोपर सादे टेक्स्ट संस्करण शामिल नहीं है। उचित = समान जानकारी जैसे HTML संस्करण में, एक और ईमेल क्लाइंट प्राप्त करने या वेब पर उपलब्ध होने पर HTML संस्करण के लिंक के बारे में केवल एक बेवकूफ टिप्पणी नहीं।

तुम सच में की जरूरत है: http://pear.php.net/package/Mail_Mime

+3

दुरुपयोग होने पर वे परेशान हो सकते हैं। हालांकि, अगर सावधानी से उपयोग किया जाता है, तो वे काफी अच्छे हैं। मेरी राय में, सर्वोत्तम अभ्यास दोनों सादा/पाठ और सादे/एचटीएमएल निकायों को भेजना है, इसलिए उपयोगकर्ता वह चुन सकता है जिसे वह देखना चाहता है। – binaryLV

2

मैं अपने आप को ऐसा करने के साथ चारों ओर खिलवाड़ बजाय सुझाव है कि आप वेब यह करने के लिए भर में उपलब्ध कई मुफ्त वर्गों में से एक का उपयोग करें।

मैं सिफारिश करेंगे: PHPMailer

3

आपको इनकमिंग मेल के हेडर को देखा है? यह

Reply-To: [email protected]: text/html

आप यहाँ एक और \r\n जोड़ने का कहना है:

Reply-To: " . $from . "\r\n";