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 для вашего изображения.

Другие вопросы по тегам