PHP Прикрепление изображения к электронной почте - PullRequest
6 голосов
/ 11 февраля 2009

Есть ли способ прикрепить изображение к почтовому сообщению в формате HTML, созданному на PHP?

Нам необходимо убедиться, что корпоративный логотип находится на электронных письмах, отправляемых клиентам, которые могут не иметь доступа к Интернету во время чтения их электронной почты (они, очевидно, будут иметь его для загрузки файлов).

Ответы [ 6 ]

11 голосов
/ 11 февраля 2009

Попробуйте пакет PEAR Mail_Mime , который может вставлять изображения для вас .

Вам необходимо использовать метод addHTMLImage () и передать идентификатор содержимого (cid), который представляет собой уникальную строку текста, которую вы также будете использовать в атрибуте src вашего img в качестве URL-адреса cid:. Например:

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

//attach our image with a unique content id
$cid="mycidstring";
$mime->addHTMLImage("/path/to/myimage.gif", "image/gif", "", true, $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);
2 голосов
/ 11 февраля 2009

Вероятно, проще всего использовать библиотеку, которая может работать с вложениями электронной почты. Например, PEAR Mail_Mime .

1 голос
/ 11 февраля 2009
Пакет

PEAR Mail_Mime - то, что вам нужно.

После того, как вы настроили свое сообщение, добавить вложение так же просто, как:

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

Если вы хотите, чтобы ваш логотип отображался в определенном месте электронной почты, а не только как вложение, вы можете сделать следующее:

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

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

Этот подход может иметь неоднозначные результаты в зависимости от почтового клиента вашего пользователя, поэтому перед его отправкой попробуйте проверить свой формат на фиктивных учетных записях gmail, yahoo и hotmail.

0 голосов
/ 04 мая 2010

Попробуйте swiftmailer, вот хороший пример использования встроенного изображения http://swiftmailer.org/wikidocs/v3/embedding_images?s[]=embed

0 голосов
/ 11 февраля 2009

Здесь более чем достаточно ответов, которые должны помочь решить вашу конкретную проблему, но я просто подумал, что, возможно, стоит указать, что у вас вполне может быть проблема больше , которую вы не рассматривали.

В частности - написание электронных писем для отправки через PHP наполнено потенциальными ошибками и должно выполняться только в том случае, если вы действительно хорошо представляете, что может пойти не так.

Если вы планируете отправлять электронные письма довольно интенсивно, я настоятельно рекомендую сделать это через выделенного клиента для маркетинга электронной почты или внедрить один из множества API маркетинга электронной почты, который будет отправлять его вам. ( mailchimp , видимо, приличный).

0 голосов
/ 11 февраля 2009

Вы катаетесь самостоятельно или используете сборный класс? Я рекомендую PHP Мейлер [0] сам, и есть также PEAR :: Mail_Mime [1] среди других, которые Google будет рад помочь вам находить. Я использую PHP Mailer для отправлять сообщения со встроенными изображениями [2] в течение многих лет без помех, хотя медведь в виду, что каждое изображение увеличивает пропускная способность электронной почты огромна, так как правило, он не должен использоваться для что-нибудь навалом. И повторить Билла, do также используйте текстовую альтернативу.

[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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...