Как отобразить встроенное изображение в письме в формате HTML как обычное изображение (PHP) - PullRequest
0 голосов
/ 22 декабря 2011

Я создаю почтовый клиент и переживаю много проблем.Теперь последняя проблема, с которой я сталкиваюсь, состоит в том, чтобы показывать внедренные изображения в теле письма в формате HTML.

Мой код тела письма выглядит примерно так:они не полезны.Также ищет другие возможные подобные проблемы при отображении содержимого почты.

Я использую PHP IMAP с POP3 для получения почты.В настоящее время используется Gmail в качестве почтового сервера.Отправка почты с использованием SMTP (PhpMailer).

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

В HTML изображения - это автономные документы с определенным URI (используется атрибутом src = "").В вашем MIME boby этот атрибут src относится к относительной части MIME.Итак, вам нужно записать все содержимое частей MIME в отдельный файл (например, / tmp / [md5_MIME_PART_ID]). Затем используйте сценарий CGI, чтобы переписать тело письма и переслать определенный запрос MIME:

<?
if($_GET['mime']) {
  readfile("/tmp/{$_GET['mime']}");
  die;
}    
$contents = preg_replace("/sid:/", "readmail.php?mime=$1", $contents);
echo $contents;

Конечно, правильная система баз данных здесь будет более эффективной, но это только начало

0 голосов
/ 22 декабря 2011

Использовали ли вы:

$mail->AddEmbeddedImage(filename, cid, name);
//By using this function with this example's value above, results in this code:
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg ');

Если да, что не так?Почему ты не счастлив?

Обратите внимание, что по умолчанию большинство почтовых клиентов не показывают встроенные изображения, это относится к Gmail и Outlook.Вы не можете обойти это.Это функция безопасности / сохранения полосы пропускания.Пользователь должен сначала нажать «Показать изображения», прежде чем они появятся.

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