addHTMLImage не работает
Я работаю над проектом, который рассылает HTML-письма людям после заполнения форума. Я заставил работать HTML-часть кода, но по какой-то причине не могу отобразить изображение баннера вверху при встраивании изображения в мой код Я работал раньше, когда работал над последней версией PHP, но мне пришлось перейти на PHP 5.3, чтобы мои скрипты работали на нашем сервере. С тех пор я использовал тот же код, и это привело к сбою. Я пробовал много разных методов, и ни один из них не оказался эффективным. Вот мой код
require_once('Mail.php');
require_once('Mail/mime.php');
$smtp_credentials = array('host' => 'smtp.postmarkapp.com', 'port' => 25, 'auth' => TRUE, 'username' => '*', 'password' => '*');
$headers = array('From' => '*', 'To' => $email, 'Subject' => $subject);
$mime = new Mail_mime(array('eol' => PHP_EOL));
$file = '/*/*/*/dls.jpg';
$mime->addHTMLImage(file_get_contents($file),'image/jpeg',basename($file),false, "blackstone");
#I used this code to fish out the cid out of mime I tried echoing this out and
# it returned blackstone which I defined as the 5th parameter of addHTMLImage which
# sets the cid.
$cid=$mime->_html_images[count($mime->_html_images)-1]['cid'];
$banner = '<span style="color:#1f497d">
<img width = "623" height = "85" src = "cid:' . $cid . '" />
</span>';
$message_text = $banner;
$mime->setHTMLBody($message_text);
$mime->setTXTBody($body_text);
$mail = Mail::factory('smtp', $smtp_credentials);
try {
$send = $mail->send($email, $mime->headers($headers), $mime->get());
} catch (Exception $e) {
echo $e->getMessage(); die;
}
echo 'mail sent!';
Я пробовал много разных вещей, например вообще не использовал cids, что мне бы хотелось, так как многие почтовые клиенты плохо работают с cids, но в руководстве по PEAR предлагается использовать cid в атрибуте src. Я использую Gmail, но я не думаю, что это проблема, так как она работала, когда я запускал более новую версию php. всякий раз, когда я открываю письмо, html-часть его работает. Там, где должно быть изображение, есть маленький значок изображения, но изображение не отображается.
1 ответ
URL-адрес изображения должен быть абсолютным URL-адресом, а не путем (относительным или абсолютным). Это не может быть путь, это должен быть полный URL-адрес изображения.
Поэтому вам нужно использовать действующий URL, такой как приведенный ниже.
http://www.example.com/images/image-name.jpg
Нечто подобное ниже не будет работать.
../path/to/images/image-name.jpg
и то же самое касается ниже (это не будет работать):
/root/public/path/to/images/image-name.jpg
поэтому убедитесь, что вы указываете действительный URL для вашего изображения.