PHP bir e-postaya bir görüntü ekleme

6 Cevap php

PHP oluşturulan bir html biçimlendirilmiş e-posta mesajına bir görüntü eklemek için bir yolu var mı?

Biz (Onlar belli dosyaları indirmek için olacak) bir kurumsal logo kendi e-posta okuma ederken internet erişimi olmayabilir müşterilere gönderilen e-postalar üzerinde olduğundan emin olmak gerekir.

6 Cevap

Olabilir embed images for you PEAR Mail_Mime paketi deneyin.

Ben bu soruya cevap, ben hızlı bir örnek gönderdi, ancak yazılı olarak API kullanarak bir görüntü Ekli bir mesaj üretilen bulundu, ancak satır içi işlenmiş değildi. Biraz pislik bu sınıf ile çalışması için gereklidir.

Özellikle, bağlı görüntü için içerik kimliği gerekir ve Mail_mime doğrudan size bu vermeyecektir. Sağ addHTMLImage çağırdıktan sonra Mail_mime iç yapılarının dışarı balık gerekir. Büyük değil.

İşte o Mail_mime ile yapmak için bir butt-ugly yoldur ...

include('Mail.php');
include "Mail/mime.php";


$crlf = "\r\n";
$hdrs = array( 
        'From' => 'foo@bar.org', 
        'Subject' => 'Mail_mime test message' 
        ); 

$mime = new Mail_mime($crlf); 

$mime->addHTMLImage("/path/to/myimage.gif", "image/gif");

//here's the butt-ugly bit where we grab the content id
$cid=$mime->_html_images[count($mime->_html_images)-1]['cid'];

//now we can use the content id in our message
$html = '<html><body><img src="cid:'.$cid.'"></body></html>';
$text = 'Plain text version of email';

$mime->setTXTBody($text);
$mime->setHTMLBody($html); 

$body = $mime->get();
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('mail');
$mail->send('person@somewhere.org', $hdrs, $body);

Bu e-posta ekleri ile başa bazı kütüphane kullanmak için muhtemelen en kolay. Örneğin, ARMUT en Mail_Mime.

Are you rolling your own, or using a prefab class? I recommend PHP Mailer[0] myself, and there's also PEAR::Mail_Mime[1] among others that Google would be happy to help you find. I've been using PHP Mailer to send messages with embedded images[2] for years without a hitch, though bear in mind that each image increases the email's bandwidth weight hugely, so generally it should not be used for anything in bulk. And to echo Bill, do make use of the text-only alternative too.

[0] http://phpmailer.sourceforge.net/

[1] http://pear.php.net/manual/en/package.mail.mail-mime.php

[2] http://phpmailer.sourceforge.net/docs/PHPMailer/PHPMailer.html#AddEmbeddedImage

http://lists.evolt.org/archive/Week-of-Mon-20060612/183029.html alınan

PEAR'ın Mail_Mime paketi burada ne peşinde olduğunu.

: Eğer mesaj kurduktan sonra, bir eki eklemek kadar basittir

$mime = new Mail_mime("\n");

$mime->setTXTBody($msg_text);
$mime->setHTMLbody($msg_html);

// Add gif as attachment to mail
$mime->addAttachment("/path/to/image/smile.gif", "image/gif");

$body = $mime->get();
$headers = $mime->headers($headers);
$mail->send("joe@bloggs.com", $headers, $body);

Yerine sadece bir eki olarak daha - - Eğer e-posta belirli bir yerde görüntülemek için logo arıyor ediyorsanız aşağıdakileri yapabilirsiniz:

// In your message html:
<img src='logo.gif' alt='Our logo' />

// PHP:
$mime->addHTMLImage('/path/to/image/logo.gif');

Bu yaklaşım, kullanıcının posta istemci bağlı olarak karışık sonuçlar var, bu yüzden olabilir kukla gmail, yahoo ve hotmail hesapları üzerinde biçimini test denemek dışarı göndermeden önce.

Orada belirli bir sorunu çözmek yardımcı olmalıdır Burada yeterli cevapların daha vardır, ama sadece iyi sen kabul etmemişti bir larger sorununuz olabileceğini işaret değer olabileceğini düşündüm.

Özellikle - PHP yoluyla gönderilmesi için yazılı emailers potansiyel FRİKİKLERİNDEN ile doldurulur ve yanlış gidebilir ne gerçekten iyi bir fikir varsa sadece yapılmalıdır.

Eğer e-posta göndermek planlıyorsanız oldukça yoğun ben güçlü bir özel e-posta pazarlama müşteri veya sizin için bunu göndereceğiz orada birçok e-posta pazarlama API dışarı birini uygulama ya aracılığıyla yapıyor öneririz. (mailchimp anlaşılan iyi biridir).

Swiftmailer burada gömülü görüntüyü http://swiftmailer.org/wikidocs/v3/embedding_images?s [] = embed kullanmak için nasıl iyi bir örnektir deneyin