За последние 24 часа нас посетили 20594 программиста и 1591 робот. Сейчас ищут 1126 программистов ...

Некорректно отображается картинка в письме

Тема в разделе "Работа с почтой", создана пользователем SkyAn, 4 янв 2016.

  1. SkyAn

    SkyAn Новичок

    С нами с:
    19 ноя 2014
    Сообщения:
    3
    Симпатии:
    0
    У меня есть форма которая генерирует и отправляет письмо. В письме текст с формы и приаттаченая картинка. Так вот, в The Bat! картинка видна при получении письма, а в Outlook картинка не открывается. Подскажите в чем может быть проблема?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    без исходников - гадание на кофейной гуще.
    возможно картинка неверно встраивается в письмо.
     
  3. SkyAn

    SkyAn Новичок

    С нами с:
    19 ноя 2014
    Сообщения:
    3
    Симпатии:
    0
    Код (PHP):
    1. $img3 = str_replace('data:image/png;base64,', '', $_POST['img1']);
    2.             $file_name    =    $bound.".png";
    3.             $body        .="Content-Type: image/png; name=".basename($file_name)."\n";
    4.             $body        .="Content-Transfer-Encoding:base64 \n";
    5.             $body        .="Content-ID: <str_img_1>\n\n";
    6.             $body        .=$img3."\n";
    7.             $body        .="--".$bound."--\n\n"; 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Возможно нарушен стандарт, может кто-то и будет разбираться в твоём коде, ещё и не всё ты показал, но проще сформировать и отправить письмо через https://github.com/PHPMailer/PHPMailer
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну из предложенного в принципе видно, что нарушен стандарт. и да, этого исходника недостаточно для полноты картины. проще использовать именитый отлаженный инструмент, который предлагает Денис.
     
  6. SkyAn

    SkyAn Новичок

    С нами с:
    19 ноя 2014
    Сообщения:
    3
    Симпатии:
    0
    Код (PHP):
    1. if (isset($_POST['img1'])){
    2.         $_POST['message']     = str_replace("\r\n", "***", $_POST['message']);
    3.           $_POST['message']     = substr(htmlspecialchars($_POST['message']), 0, 10000);
    4.         $_POST['message']     = str_replace("***", "<br/>", $_POST['message']);
    5.         $_POST['name']        =  substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
    6.         $_POST['company']     = substr(htmlspecialchars(trim($_POST['company'])), 0, 50);
    7.         $_POST['email1']     = substr(htmlspecialchars(trim($_POST['email1'])), 0, 50);
    8.         if(empty($_POST['message'])) $_POST['message'] = 'NO TEXT SUBMITTED';
    9.         $to = 'test@test.com,';
    10.         $subject = 'User '.$_POST['name'].' submitted inquiry';
    11.         $bound        =    strtoupper(uniqid(time()));
    12.         $headers    =    "From: ".$_POST['email1']."\n";
    13.         $headers    .=    "Mime-Version: 1.0\n";
    14.         $headers    .=    "Content-Type: multipart/alternative; boundary=".$bound."\n";
    15.         $body        ="--".$bound."\n";
    16.         $body        .="Content-type: text/html; charset=\"UTF-8\"\n";
    17.         $body        .="Content-Transfer-Encoding: 8bit\n\n";
    18.         if($_POST['img1'] == "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC+ZpjcAAAFi0lEQVR4nO3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBXA/yTAAFLZiwOAAAAAElFTkSuQmCC") {
    19.             $body        .="<html>
    20.             <head>
    21.             <title>User ".$_POST['name']." submitted inquiry</title>
    22.             </head>
    23.             <body>
    24.             The inquiry from <b>" .$_POST['name']. "</b>, ".$_POST['company'].", ".$_POST['email1'].".
    25.             <br/>_____________________________________________________________<br/><br/>" 
    26.             .$_POST['message']. 
    27.             <br/>_____________________________________________________________<br/><br/>The user has not provided sketch.
    28.             </body>
    29.             </html>";
    30.             $body        .="\n\n--".$bound."\n";
    31.         }else{
    32.             $body        .="<html>
    33.             <head>
    34.             <title>User ".$_POST['name']." submitted inquiry</title>
    35.             </head>
    36.             <body>
    37.             The inquiry from <b>" .$_POST['name']. "</b>, ".$_POST['company'].", ".$_POST['email1'].".
    38.             <br/>_____________________________________________________________<br/><br/>" 
    39.             .$_POST['message']. 
    40.             <br/>_____________________________________________________________<br/><br/><img src=\"cid:str_img_1\">
    41.                     </body>.
    42.             </body>
    43.             </html>";
    44.             $body        .="\n\n--".$bound."\n";
    45.             $img3 = str_replace('data:image/png;base64,', '', $_POST['img1']);
    46.             $file_name    =    $bound.".png";
    47.             $body        .="Content-Type: image/png; name=".basename($file_name)."\n";
    48.             $body        .="Content-Transfer-Encoding:base64 \n";
    49.             $body        .="Content-ID: <str_img_1>\n\n";
    50.             $body        .=$img3."\n";
    51.             $body        .="--".$bound."--\n\n";
    52.         }
    53.     mail($to, $subject, $body, $headers);    
    54.    
    55.     echo '<div style="text-align:center">Thank you very much for your inquiry.</div>';
    56. } 
    Вот мой полный код формирования и отправки сообщения
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    SkyAn стандарт большой и сложный, по этому есть несколько решений, таких как PHPMailer и другие.
    Зачем изобретать свою библиотеку для работы с почтой, если можно взять готовую.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    тем более такую кривую. например брать подстроку н-ной длины после того как оригинальная строка подверглась конвертации. сходу получаем поломанные строки если подстрока завершилась на середине эскейп-последовательности. при этом строки не кодируются как этого так ожидает протокол а ожидаемый CRLF и вовсе вдруг заменен на LF.

    в общем ТС юзай готовый класс.
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв