2012-06-28 15 views
34

PHP kullanarak resimleri HTML formatlı bir e-posta ile nasıl gönderebilirim? Bazı ayarlara sahip bir sayfaya ve bir adrese e-posta ile gönderilen bir HTML çıktısına sahip olmak istiyorum. Ne yapmalıyım? Asıl sorun, dosyalar eklemek. Bunu yapabilir miyim?HTML üzerinden e-posta ile HTML gönderilsin mi?

+0

W3Schools'da tarafından daha detaylı açıklamalar için here kontrol edebilirim? Veya genel olarak PHP kullanarak e-posta mı gönderiyorsunuz? – Adi

cevap

80

Öyle oldukça basit, umarım (Bu mailler ve e-posta içerdiğini alıcı söyler bu satırı olan

$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); 

... sunucudaki görüntüleri bırakmak ve bunlara PHP + CSS göndermek yorumlamak gerekecektir) de oluşturulan HTML: Burada

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

Ben bilgi .. (link...) gerçi güvenliğe ihtiyacı olacak

var link ...

+0

css formatlama, resimler ve bir html dosyasının ihtiyaç duyduğu js gibi diğer dosyalar nedir? – Abadis

+3

@UmerHayat kabul etti, ama hepimiz bir yerlere başlamak zorunda kaldık, sadece Google'ın nasıl yapıldığını öğreniyor olsa bile ... – Chris

+0

@Abadis - CSS her iki şekilde de yapılabilir, dosyaya gömülü veya harici olarak bir HTML dosyasına . Görüntüler sanırım (hiç yapmadım) ya da sunucuda bırakılmış ve bağlantı kurabilir. Nasıl çalıştığından emin değilseniz HTML görüntülerine bakın: P – Chris

2

En basit yol muhtemelen Zend Framework'ü veya CakePHP veya Symphony gibi diğer tüm çerçeveleri kullanmaktır.

Standart mail işleviyle de yapabilirsiniz, ancak resimlerin nasıl ekleneceği konusunda biraz daha fazla bilgiye ihtiyacınız olacaktır.

Alternatif olarak, görüntüleri birleştirmek yerine bir sunucuda barındırın. HTML postası gönderme mail işlev belgelerinde belgelenmiştir.

+1

Ekleme çerçevesi overkill IMO :) – gonatee

+0

@gonatee hangi seviyeye bağlıdır İstediğiniz kalite. Kabul edilen cevap, tüm ancak en temel durumlar için işe yaramayacaktır. Temel durumlarda ihtiyacınız olan tek şey ise, 'mail()' yi kullanmanız yeterli olacaktır. Daha güvenilir bir çözüme ihtiyacınız varsa veya karmaşık durumlara veya taleplere sahipseniz, düzinelerce RFC belgesi ve yıllarca hata tespitinden geçmiş bir çerçeve veya kütüphaneye güvenmeniz en iyisidir. Özel bir kütüphane ya da istediğiniz özellikleri seçip seçebileceğiniz bir çerçeve bulabiliyorsanız, tüm bunları kendimiz bulmaya güvenmek için çok az sebep vardır. – Martijn

15

Resimleriniz için mutlak yolu kullanarak html kodunuzu girmeniz gerekir. Mutlak yol, görüntüleri bir sunucuya yüklemeniz vegörüntülerinin bu <img src="http://yourdomain.com/images/example.jpg"> gibi doğrudan yolu belirtmeniz gereken bir özellik yüklemeniz gerektiği anlamına gelir. Aşağıda

sizin refference için PHP kodu: - Onun bir bu kodu vardır ve benim sitemde mükemmel çalışacaktır 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

alınan

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); 
    } 

posta işlevi

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); 
     } 

image url işlevi, görüntüyü değiştirmek istediğinizde Sadece tek bir fonksiyonda ge çok parola gibi bir şifre var kullanıcı şifresini unuttum kullanıcı için orada kullanıyorum url fonksiyonunu kullanıp direkt olarak yolu ayarlayabilirsiniz.

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

Teşekkürler, bu ne gerekiyordu – Abadis

+0

@Jalpesh Yani bir CSS dosyası için sadece aynısını yapardınız? Mutlak yolu referansla ve işe yaramalı, değil mi? –

+1

@FernandoSilva mutlak yol belirlemeli ve aynı zamanda css çalışacağınız şekilde sınıf veya id öğesini ayarlamanız gerekir – Jalpesh

2

E-postayı HTML ile HTML yoluyla kolayca gönderebilirsiniz. Aşağıdaki komut dosyasını kullanın.

<?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; 
?> 

Kaynak kodu ve canlı demo buradan bulunabilir - Send Beautiful HTML Email using PHP

4

bir html e-posta php kullanarak, normal e-posta göndermek çok farklı değildir gönderme. Eklenmesi gereken, php mail() işlevinin header parametresi boyunca içerik türüdür. İşte bir örnek.

<?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); 
?> 

Ayrıca sorunun `HTML` kodu göndererek mı