PHP созданная электронная почта> вложение отсутствует в iPhone - PullRequest
0 голосов
/ 05 марта 2020

Я столкнулся со странной проблемой с одним из моих сценариев. Используя этот код для отправки электронной почты, электронные письма отправляются без каких-либо ошибок и принимаются с доступными вложениями на обычных Windows компьютерах, iMa c и android мобильных устройствах.

Но когда письмо получено на iPhone письмо показывает скрепку, но значки вложений вообще не открываются.

Есть предложения?

// attachment algemene voorwaarden
$check_upload = glob('../uploads/algemene_voorwaarden/*.*');
foreach($check_upload as $val) { $mail->AddAttachment($val); }

// other attachments
$check_upload = glob('../uploads/file_browser/bevestigingen/'.$mail_folder.'/*.*');
foreach($check_upload as $val) { $mail->AddAttachment($val); }

// convert \r\n to new lines
$mail_body = stripcslashes(isset($mail_body) ?  preg_replace('#(\\\r|\\\r\\\n|\\\n)#', '<br/>', $mail_body) : false);
$mail_body = str_replace("<br/><br/>","<br/>",$mail_body);

$mail->AddEmbeddedImage('../img/'.$config['logo_mail'], 'header');
$mail->AddEmbeddedImage('../img/mail_logo_torza.png', 'footer');

$mail->Subject = 'Orderbevestiging van '.$config['bedrijf'];
$mail->Body = '<html><head></head>'.
                    '<body style="margin: 10px;" style="font-family:Verdana, Verdana, Geneva, sans-serif; font-size:12px; color:#000000;">

                        <table bgcolor="'.$config['logo_color'].'" width="800" align="center" cellspacing="0" cellpadding="0">
                        <tr>
                            <td colspan="2"><img src="cid:header" width="800"></td>
                        </tr>
                        <tr style="padding: 3em;">
                            <td colspan="2">
                                '.$mail_body.'
                            </td>
                        </tr>
                        <tr valign="middle">
                            <td width="50%" align="right"><small><strong>Powered by &nbsp;&nbsp;</strong></small></td>
                            <td width="50%" align="left"><a href="http://www.torza.nl" target="_blank"><img src="cid:footer" width="50" alt="Torza"></a></td>
                        </tr>
                        </table>

                    </body></html>';

if(!$mail->Send()) { echo'<div class="alert alert-danger text-center" role="alert">Er is helaas iets fout gegaan.</div>'; die; }

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Проблема возникла из-за того, как изображения были добавлены в верхний и нижний колонтитулы.

$mail->AddEmbeddedImage('../img/'.$config['logo_mail'], 'header');
$mail->AddEmbeddedImage('../img/mail_logo_torza.png', 'footer');

<img src="cid:header" width="800">

<img src="cid:footer" width="50" alt="Torza">

Я изменил это сейчас на

<img src="data:image/jpg;base64,-- BASE 64 STRING -- " />

Изображения были закодированы здесь: https://www.motobit.com/util/base64-decoder-encoder.asp

0 голосов
/ 05 марта 2020

Официальная ошибка GitHub с устройства Apple: LINK

Solveta, это ошибка iOS, а не PHPMailer. Вы можете проверить это с помощью Gmail или Outlook или другого почтового клиента. Отправьте электронное письмо на ваш iPhone с несколькими вложенными изображениями и прикрепленным файлом размером 1 МБ +, и вы увидите, что сообщение будет помечено как «Загружено как обычный текст» на вашем iPhone. Это поведение связано с размером сообщения. Я проверил, что это не произойдет, если сообщение <~ 500 КБ. </p>

((очень) грустная вещь - по крайней мере на iOS10.x, даже если вы нажмете «Donwload full Message», оно не будет покажите встроенные изображения в любом случае. Обходной путь - дважды щелкнуть кнопку «Домой», закрыть почтовое приложение и заново открыть сообщение. Я открыл 2 ошибки на сайте Apple, но не получил ответа ... (не буду комментировать)

...