Nasıl HTML / CSS e-postalar göndermek için?

4 Cevap php

Çoğu e-posta istemcileri (Gmail ve Hotmail dahil) HTML e-postalara CSS okuma sorunları var. Ben sık sık her kullanıcının ucunda normal görünüyor ki doğru e-posta biçiminde benim HTML / CSS dönüştürmek için bu hizmeti kullanmak. Temelde ne yapar stilleri satır içi tüm CSS dönüştürmek:

http://premailer.dialect.ca/

Eğer herhangi bir HTML e-postalarda CSS göndermek için başka yöntemler var mı? Ben otomatik olarak e-posta oluşturmak ve nedeniyle bazı kısıtlamaları, ben satır içi stilleri değiştiremezsiniz.

4 Cevap

Doğrudan biçimi gelince, ben her zaman ancak ben SwiftMailer (http://swiftmailer.org/) PHP5 e-posta işlevselliği işlemek için kullanmak ve son derece yardımcı oldu, inline CSS styling yaptık.

E-posta istemcisi HTML sürümünü sevmez eğer en azından bir şey temiz üzerinden oluyor biliyorum, her zaman metin sürümü varsayılan böylece farklı formatları ile çok parçalı mesajlar gönderebilir.

Lütfen "views" klasöründe, (ben dolayısıyla. Tpl uzantısı, çok bilmiş kullanın) farklı e-posta formatları için yolları ayrı ayarlayabilirsiniz. İşte ne tipik bir SwiftMailer bulunuyor :: sendTemplate () fonksiyonu şablonlar kurma olduğunuzda gibi görünecektir:

 $email_templates = array('text/html' => 'email/html/' . $template . '.en.html.tpl',
                        'text/plain' => 'email/text/' . $template . '.en.txt.tpl');

foreach ($email_templates as $type => $file) {
  if ($email->template_exists($file)) {
    $message->attach(new Swift_Message_Part($email->fetch($file), $type));
  } elseif ($type == 'text/plain') {
    throw new Exception('Could not send email -- no text version was found');
  }
}

Siz anladınız. SwiftMailer, "teslim edilemeyen" adresleri dönen teslimat hataları günlüğe ve büyük e-posta toplu kısma dahil olmak üzere diğer iyi şeyler bir sürü vardır. Ben bunu kontrol öneririm.

Siz içeriği HTML diyor bir başlık eklemek gerekir. Eğer posta kullanmak () fonksiyonu, başlıklardan biri olmalıdır: İçerik Türü: html / metin (Yani 'kesin' başlığı olmayabilir).

Sana bir örnek bulalım: (php.net/mail sayfasından)

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

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

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

Yukarıdaki örneğe eklemek için, (eğer çok iyi PHP bilmiyorum), sadece değişkenleri kullanarak "e-posta" oluşturmak zorunda: konu, mesaj ve başlıkları, için

Eğer, bu PHP komut dosyası doldurmak ve çalıştırmak için bir form oluşturmak için, aksi takdirde sadece elle Bu dosyada her şeyi girebilirsiniz, bir PHP dosyası olarak kaydetmek, PHP destekleyen bir sunucu üzerinde kusmak nasıl bilmek istiyorsanız bana bildirin ve tarayıcınızda dosyasına gidin.

Here's the code:

// Setup recipients
$to = 'johndoe@google.com' . ',' // comma separates multiple addresses
$to .= 'janedoe@msn.com';

// subject
$subject = 'PHP Email Script - Test Email';

// message (to use single quotes in the 'message' variable, supercede them with a back slash like this-->&nbsp; \'
$message = '
<html>
<head>
  <title>PHP Email Script</title>
</head>
<body>
  <p style="background: #ccc; width: 100%;">Test Email Script</p>
</body>
</html>
';


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

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Send the email
mail($to, $subject, $message, $headers);

kolay yolu gömülü css ile html sayfası yazmak ve automated styling machine aracılığıyla itmek