Можно ли предотвратить появление встроенного HTML-изображения MIME в качестве вложения? - PullRequest
0 голосов
/ 19 августа 2011

Вот код, который я использую для отправки по почте:

<?php
include('Mail.php');
include('Mail/mime.php');

$address = "Any old address will do";
$crlf = "\r\n";
$hdrs = array( 
    'From' => 'do-not-reply@mydomain.com', 
    'Subject' => 'Mail_mime test message' 
    ); 

$mime = new Mail_mime($crlf); 

$mime->addHTMLImage("emailHeader.jpg", "image/jpg");

$cid=$mime->_html_images[0]['cid'];

$html = '<html><body><center><img src="cid:'.$cid.'">This image shows up just fine</center></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($address, $hdrs, $body);

?>

Изображение отображается в сообщении электронной почты, но также отображается в виде вложения.Это немного неуклюже, я могу предотвратить это?

1 Ответ

0 голосов
/ 29 сентября 2016

У меня была проблема, когда некоторые почтовые клиенты отображали все встроенные изображения в виде пустых полей.

Что я обнаружил, так это то, что класс PEAR Mail_mime попытается исправить ваши ссылки Content-ID для вас, если не указан domainID.

    e.g.
    [HTML] src="123456.jpg" 
    [Headers] Content-ID: <123456.jpg>
    updates to
    [HTML] src="cid:123456.jpg@domain.com" 
    [Headers] Content-ID: <123456.jpg@domain.com>
    BUT
    [HTML] src="cid:123456.jpg" 
    [Headers] Content-ID: <123456.jpg>
    updates to
    [HTML] src="cid:123456.jpg" 
    [Headers] Content-ID: <123456.jpg@domain.com>

Разрывает связь между тегом HTML и вложением MIME.

Этот ответ помог мне

Поэтому наилучшим решением будет включение доменного идентификатора в Content-ID самостоятельно перед отправкой электронного письма.

Я отправлял несколько отдельных писем в цикле. Каждое письмо должно было быть одинаковым, только получатели в заголовке менялись для каждой итерации. Я обнаружил, что первое электронное письмо было отправлено правильно, а затем на втором и последующих письмах был виден контент Content-ID.

Первоначальное тестирование в Outlook не выявило проблему (изображения были в порядке). Только тестирование в Gmail выявило ошибку. Однако Gmail не будет показывать вам атрибут src, если обнаружит недопустимые данные, поэтому вы не можете увидеть проблему только с проверкой в ​​сообщении электронной почты в Gmail.

...