Я не думаю, что вы пытаетесь сделать это возможно (автоматическое добавление необходимых изображений) с PHPMailer "с нуля".
Может быть, вы могли бы разобрать HTML, чтобы получить список изображений, на которые он ссылается? Есть как минимум 2 способа сделать это:
- с использованием rexexes; как правило, не лучший способ сделать что-то, если вы пытаетесь извлечь данные из HTML - и вы ^^
- другим (вероятно) лучшим способом было бы использовать
DOMDocument::loadHTML
для содержимого HTML, загруженного из вашего файла (вывод file_get_contents
), и работать с методами DOMDocument
(и, почему бы и нет, DOMXPath
?)
Чтобы получить изображения, я полагаю, в вашем электронном письме есть теги <img>
с атрибутами src
; цель состоит в том, чтобы найти значения этих; -)
Получив путь к списку изображений, вы выполняете их итерацию и вызываете $mail->AddEmbeddedImage
для каждого из них.
Полагаю, это сработало бы (хотя и не пробовал, но не понимаю, почему) .
В качестве дополнительного примечания другим способом было бы хранить изображения на вашем сервере в течение нескольких дней / недель / месяцев, а не включать их в почту; это уменьшит размер писем, что означает:
- меньше пропускной способности, потраченной на вашей стороне (если вы отправляете много писем, это может составить большую часть пропускной способности)
- меньше тратится на каждую сторону ваших клиентов - что тоже хорошо для них ^^
- меньше места используется на жестких дисках; -)
И чтобы убедиться, что изображения не будут удалены / заменены на сервере раньше, чем через пару недель / месяц, вы можете создать новый каталог для каждого информационного бюллетеня, содержащего его изображения, - и время от времени удаляйте каталоги старше X
дней.