2012-06-28 20 views
34

मैं PHP का उपयोग कर चित्रों के साथ एक HTML प्रारूप ईमेल कैसे भेज सकता हूं? मैं कुछ सेटिंग्स और एक HTML आउटपुट के साथ एक पृष्ठ चाहता हूं जो ईमेल के माध्यम से किसी पते पर भेजा जाता है। मुझे क्या करना चाहिए? मुख्य समस्या फ़ाइलों को संलग्न करना है। क्या मैं ऐसा कर सकता हूं?PHP के माध्यम से ईमेल में एचटीएमएल भेजें?

+0

आपकी समस्या को भेज रहा है 'HTML' कोड के लिए here देख सकते हैं? या सामान्य रूप से PHP का उपयोग कर ईमेल भेज रहे हैं? – Adi

उत्तर

80

यह है बहुत सरल, सर्वर पर छवि के छोड़ने के लिए और पीएचपी + उन्हें सीएसएस भेजें ...

$to = '[email protected]'; 

$subject = 'Website Change Reqest'; 

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n"; 
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n"; 
$headers .= "CC: [email protected]\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=UTF-8\r\n"; 

$message = '<p><strong>This is strong text</strong> while this is not.</p>'; 


mail($to, $subject, $message, $headers); 

यह इस लाइन है कि मेलर और प्राप्तकर्ता ईमेल में शामिल है कि बताता है (उम्मीद) अच्छी तरह का गठन एचटीएमएल कि यह व्याख्या करने के लिए की आवश्यकता होगी:

$headers .= "Content-Type: text/html; charset=UTF-8\r\n"; 

यहाँ लिंक मैं जानकारी .. (link...)

आप सुरक्षा हालांकि आवश्यकता होगी मिल गया है ...

+0

सीएसएस बनाने, चित्रों और जेएस जैसी अन्य फाइलों के बारे में क्या है जो एक HTML फ़ाइल की आवश्यकता है? – Abadis

+3

@UmerHayat सहमति, लेकिन हम सभी कहीं न कहीं शुरू करने के लिए किया था, भले ही वह केवल सीख रहा है कि किस तरह Google सामान के लिए ... – Chris

+0

@Abadis - सीएसएस किसी भी तरह से किया जा सकता है, फ़ाइल में एम्बेड या HTML फ़ाइल के साथ हमेशा की तरह प्रति बाह्य रूप में । मुझे लगता है कि छवियों को पैक किया जा सकता है (मैंने इसे कभी नहीं किया है) या सर्वर पर छोड़ दिया है और उससे जुड़ा हुआ है। एचटीएमएल छवियों को देखो यदि आप अनिश्चित हैं वे कैसे काम: पी – Chris

2

सरलतम तरीका शायद ज़ेंड फ्रेमवर्क या केकपीएचपी या सिम्फनी जैसे अन्य ढांचे का उपयोग करना है।

आप मानक mail फ़ंक्शन के साथ भी ऐसा कर सकते हैं, लेकिन आपको चित्रों को संलग्न करने के तरीके के बारे में थोड़ा और जानकारी चाहिए।

वैकल्पिक रूप से, बस उन्हें जोड़ने के बजाय सर्वर पर छवियों को होस्ट करें। एचटीएमएल मेल भेजना mail फ़ंक्शन प्रलेखन में प्रलेखित है।

+1

में काम करना चाहते हैं, तो ढांचा जोड़ना overkill है IMO :) – gonatee

+0

@gonatee किस स्तर पर निर्भर करता गुणवत्ता आप चाहते हैं। स्वीकृत उत्तर सभी बुनियादी मामलों के लिए काम नहीं करेगा। यदि मूलभूत मामलों की आपको आवश्यकता है, तो 'मेल() 'का उपयोग करना ठीक होगा। यदि आपको अधिक विश्वसनीय समाधान की आवश्यकता है या जटिल परिस्थितियों या मांगों की आवश्यकता है, तो संभवतः एक ढांचे या पुस्तकालय पर भरोसा करना सबसे अच्छा है जो आरएफसी दस्तावेजों और बग फिक्सिंग के दर्जनों के माध्यम से पहले से ही हो चुका है। यदि आप एक समर्पित पुस्तकालय या ढांचा ढूंढ सकते हैं जो आपको अपनी इच्छित सुविधाओं को चुनने और चुनने देता है, तो हमारे सभी को समझने पर भरोसा करने का कोई कारण नहीं है। – Martijn

15

आपको छवियों के लिए पूर्ण पथ का उपयोग करके अपने एचटीएमएल को कोड करने की आवश्यकता है। पूर्ण पथ से मतलब है कि आपको किसी सर्वर में छवियों को अपलोड करना होगा और src छवियों की विशेषता में आपको <img src="http://yourdomain.com/images/example.jpg"> जैसे प्रत्यक्ष पथ देना होगा।

नीचे आपके संदर्भ के लिए PHP कोड है: - इसका से http://www.php.net/manual/en/function.mail.php

<?php 
// multiple recipients 
$to = '[email protected]' . ', '; // note the comma 
$to .= '[email protected]'; 

// subject 
$subject = 'Birthday Reminders for August'; 

// message 
$message = ' 
    <p>Here are the birthdays upcoming in August!</p> 
'; 

// To send HTML mail, the Content-type header must be set 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; 

// Additional headers 
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n"; 
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n"; 


// Mail it 
mail($to, $subject, $message, $headers); 
?> 
7

लिया मैं एक के लिए इस कोड है और यह पूरी तरह से अपनी साइट के लिए चलेंगे

public function forgotpassword($pass,$name,$to) 
    { 
     $body ="<table width=100% border=0><tr><td>"; 
     $body .= "<img width=200 src='"; 
     $body .= $this->imageUrl(); 
     $body .="'></img></td><td style=position:absolute;left:350;top:60;><h2><font color = #346699>PMS Pvt Ltd.</font><h2></td></tr>"; 
     $body .='<tr><td colspan=2><br/><br/><br/><strong>Dear '.$name.',</strong></td></tr>'; 
     $body .= '<tr><td colspan=2><br/><font size=3>As per Your request we send Your Password.</font><br/><br/>Password is : <b>'.$pass.'</b></td></tr>'; 
     $body .= '<tr><td colspan=2><br/>If you have any questions, please feel free to contact us at:<br/><a href="mailto:[email protected]" target="_blank">[email protected]</a></td></tr>'; 
     $body .= '<tr><td colspan=2><br/><br/>Best regards,<br>The PMS Team.</td></tr></table>'; 
     $subject = "Forgot Password"; 
     $this->sendmail($body,$to,$subject); 
    } 

मेल समारोह

function sendmail($body,$to,$subject) 
     { 
      //require_once 'init.php'; 


      $from='[email protected]';  
      $headersfrom=''; 
      $headersfrom .= 'MIME-Version: 1.0' . "\r\n"; 
      $headersfrom .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
      $headersfrom .= 'From: '.$from.' '. "\r\n"; 
      mail($to,$subject,$body,$headersfrom); 
     } 

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

function imageUrl() 
    { 
     return "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1)."images/capacity.jpg"; 
    } 
+1

धन्यवाद, यह वही है मैं तुम्हें सिर्फ एक ही करना होगा एक सीएसएस फ़ाइल के लिए – Abadis

+0

@Jalpesh तो जरूरत थी? पूर्ण पथ का संदर्भ लें और इसे काम करना चाहिए, है ना? –

+1

@FernandoSilva आपको पूर्ण पथ सेट करना होगा और वर्ग या आईडी को तत्व पर सेट करना होगा ताकि आप सीएसएस – Jalpesh

1

उपयोग PHPMailer,

HTML मेल भेजने के लिए आप $ मेल> isHTML() केवल स्थापित करने के लिए है, और आप HTML टैग के साथ अपने शरीर को सेट कर सकते हैं

यहाँ

एक अच्छी तरह से लिखा ट्यूटोरियल है :

rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/

1

चाल जब एचटीएमएल शरीर के अंग का निर्माण छवि माइम भाग की सामग्री आईडी पता करने के लिए है। यह img टैग एक काम उदाहरण के लिए समारोह buildMimeMessage पर

https://github.com/horde/horde/blob/master/kronolith/lib/Kronolith.php

देखो बनाने के लिए निर्भर करता है।

2

आप आसानी से PHP के माध्यम से HTML सामग्री के साथ ईमेल भेज सकते हैं। निम्नलिखित स्क्रिप्ट का प्रयोग करें।

<?php 
$to = '[email protected]'; 
$subject = "Send HTML Email Using PHP"; 

$htmlContent = ' 
<html> 
<body> 
    <h1>Send HTML Email Using PHP</h1> 
    <p>This is a HTMl email using PHP by CodexWorld</p> 
</body> 
</html>'; 

// Set content-type header for sending HTML email 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

// Additional headers 
$headers .= 'From: CodexWorld<[email protected]>' . "\r\n"; 
$headers .= 'Cc: [email protected]' . "\r\n"; 
$headers .= 'Bcc: [email protected]' . "\r\n"; 

// Send email 
if(mail($to,$subject,$htmlContent,$headers)): 
    $successMsg = 'Email has sent successfully.'; 
else: 
    $errorMsg = 'Email sending fail.'; 
endif; 
?> 

स्रोत कोड और लाइव डेमो यहाँ से पाया जा सकता है - Send Beautiful HTML Email using PHP

4

भेजा जा रहा है एक HTML ईमेल php का उपयोग कर सामान्य ईमेल भेजने से अलग नहीं है। PHP जोड़ने() फ़ंक्शन के हेडर पैरामीटर के साथ सामग्री प्रकार जोड़ने के लिए आवश्यक है। यहाँ एक उदाहरण है।

<?php 
    $to = "[email protected]"; 
    $subject = "HTML email"; 
    $message = " 
    <html> 
    <head> 
    <title>HTML email</title> 
    </head> 
    <body> 
    <p>A table as email</p> 
    <table> 
    <tr> 
    <th>Firstname</th> 
    <th>Lastname</th> 
    </tr> 
    <tr> 
    <td>Fname</td> 
    <td>Sname</td> 
    </tr> 
    </table> 
    </body> 
    </html> 
    "; 
    // Always set content-type when sending HTML email 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\b"; 
    $headers .= 'From: name' . "\r\n"; 
    mail($to,$subject,$message,$headers); 
?> 

तुम भी w3schools द्वारा अधिक विस्तृत व्याख्या