Встраивание изображения в электронное письмо с помощью PHP

Я отправляю электронные письма PHP-сервером через локальный smtp-сервер. Это HTML-письмо должно содержать изображения, которые предполагается встроить. Я уже настроил Pear-Extensions Mail, Mail_Mime и Net_SMTP. Все электронные письма отправляются нормально, но к ним не прикреплены изображения.

Я уже нашел это решение: PHP Прикрепление изображения к электронному письму, хотя я следовал этому шаг за шагом, и изображение все еще не прикреплено к электронной почте. Я уже пытался прикрепить изображение с помощью $mime->addAttachment("/path/to/image/smile.gif", "image/gif");, но до сих пор не получаю никаких вложений.

    $userGivenName = 'John';
    $userSurname = 'Doe';

    $crlf = "\r\n";
    $mime = new Mail_mime($crlf); 
    $cid = "image001.png";
    $mime->addHTMLImage("/filehost/img/emailLogo.png", "image/png", "", true, $cid);

    $mailtext = '
        <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
            <head>
                <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
                <meta name=Generator content="Microsoft Word 15 (filtered medium)">
            </head>
            <body lang=DE link="#0563C1" vlink="#954F72">   
                <div class=WordSection1>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            Hello '.$userGivenName.' '.$userSurname.',
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            some text
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            Regards
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <b>
                            <span style=\'font-size:10.0pt;font-family:"Arial",sans-serif;color:#E30613;mso-fareast-language:DE\'>
                                Max Mustermann
                            </span>
                        </b>
                        <span style=\'font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D;mso-fareast-language:DE\'>
                        </span>
                        <span style=\'font-size:10.0pt;font-family:"Arial",sans-serif;color:#575756;mso-fareast-language:DE\'>
                            <br>
                            <b>
                                Department XY
                            </b>
                            <br>
                            ................................................................
                        </span>
                        <span style=\'font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D;mso-fareast-language:DE\'> 
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'font-size:10.0pt;mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <img border=0 width=82 height=70 style=\'width:.8541in;height:.7291in\' id="Picture_x0020_1" src="cid:'.$cid.'" alt="Company Logo">
                        </span>
                        <span style=\'font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D;mso-fareast-language:DE\'>
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <o:p>
                            &nbsp;
                        </o:p>
                    </p>
                </div>
            </body>
        </html>
    ';

    $hdrs = array( 
            'From' => '[email protected]', 
            'Subject' => 'mysubject' 
            ); 

    $mime->addAttachment("/filehost/img/emailLogo.png", "image/png");

    $msg_text = 'Plaintext';

    $mime->setTXTBody($msg_text);
    $mime->setHTMLBody($mailtext); 
    $body = $mime->get();
    $hdrs = $mime->headers($hdrs);

    $mail = Mail::factory('smtp', array('host' => 'smtp.mycompany.local', 'port' => '25', 'auth' => false));
    $mail->send($_POST['username'], $hdrs, $body);

person Platte    schedule 14.08.2019    source источник
comment
Вы уверены, что этот путь правильный? У вас есть каталог в корне файловой системы с именем filehost?   -  person Jonnix    schedule 14.08.2019
comment
Я проверил путь, и он работает нормально. Все права настроены правильно, и на демо-сайте я уже тестировал это письмо с прямым включением изображения. В моем корневом каталоге веб-сервера я создал папку с именем filehost, где хранятся все файлы, к которым нельзя получить прямой доступ, но на которые ссылаются другие файлы.   -  person Platte    schedule 14.08.2019


Ответы (1)


Попробуйте отправить с помощью PHPMailer, это простое решение

https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

Работает с smtp-подключениями TLS/SSL (для Gmail требуются TLS-подключения)

person bobom    schedule 23.08.2019
comment
Хотя это на самом деле не отвечает на мой вопрос, это просто решило мою проблему. PHPMailer отлично работает и делает то, что мне нужно. - person Platte; 26.08.2019