Проблема декодирования тела письма в PHP IMAP - PullRequest
0 голосов
/ 10 октября 2019

Я работаю над своим PHP, чтобы хранить электронные письма в отправленной папке. У меня проблема с сохранением URL в письмах, потому что я получу id и msgid в теге img src, когда оно должно быть id= и msgid=. Я искал несколько часов и не смог найти, как сохранить = в html, так как я получаю и , когда я храню электронные письма в отправленной папке.

Когда я пытаюсь это сделать:

<?php
require_once "Mail.php";
require_once "Mail/mime.php";
require_once('Mail/IMAPv2.php');

// Connect to the server:
$username = 'myusername';
$password = '*************';

$sent = '{imap.example.com:993/imap/ssl/novalidate-cert}INBOX.Sent';
$sent_mailbox = imap_open($sent, $username, $password);

$from_email = $_POST['send_from'];
$to_email = $_POST['send_to'];
$subject = $_POST['emailsubject'];
$message = '<div id="emailMessage" class="row" style="padding: 5px 30px;margin-top: 12px;"><div><div dir="ltr"><img src="http://example.com/u/?id=1562453336&amp;attid=0.2&amp;msgid=1644988591229814716&amp;view=attachment&amp;display=view" width="452" height="302" class="CToWUd a6T" tabindex="0"><br><div><br></div><div><br></div><div><img src="http://example.com/u/?id=1562453336&amp;attid=0.1&amp;msgid=1644988591229814716&amp;view=attachment&amp;display=view" class="CToWUd"><br></div><div><br></div><div><br></div><div>



';

$messageID = sprintf("<%s.%s@%s>",
        base_convert(microtime(), 10, 36),
        base_convert(bin2hex(openssl_random_pseudo_bytes(8)), 16, 36),
        'example.com');


imap_append($sent_mailbox, $sent,
    "From: ".$from_email."r\n".
    "To: ".$to_email."\r\n".
    "Subject: ".$subject."\r\n".
    "Date: ".date("r", strtotime("now"))."\r\n".
    "Message-ID: ".$messageID."\r\n".
    "MIME-Version: 1 \r\n".
    "Content-Type: multipart/mixed; boundary=\"$boundary1\"\r\n".
    "\r\n\r\n".
    "--$boundary1\r\n".
    "Content-Type: multipart/alternative; boundary=\"$boundary2\"\r\n".
    "\r\n\r\n".
    // ADD Plain text data
    "--$boundary2\r\n".
    "Content-Type: text/plain; charset=\"utf-8\"\r\n".
    "Content-Transfer-Encoding: quoted-printable\r\n".
    "\r\n\r\n".
    $message."\r\n".
    "\r\n\r\n".
    // ADD Html content
    "--$boundary2\r\n".
    "Content-Type: text/html; charset=\"utf-8\"\r\n".
    "Content-Transfer-Encoding: quoted-printable \r\n".
    "\r\n\r\n".
    $message."\r\n".
    "\r\n\r\n".
    "--$boundary1\r\n".
    "\r\n\r\n".
    // ADD attachment(s)
    $attachment1.
    "\r\n\r\n".
    "--$boundary1--\r\n\r\n",
    "\\Seen"
 );

Вот что будет показано рядом с идентификатором и рядом с msgid вот так:

<img src="http://example.com/u/?id62453336&amp;attid=0.2&amp;msgid44988591229814716&amp;view=attachment&amp;display=view" width="452" height="302" class="CToWUd a6T">

Я пробовал это:

$message = html_entity_decode($message);

И я также пробовал это:

$message = htmlspecialchars($message);

Это нене имеет значения, поэтому я не знаю, что делать.

Можете ли вы показать мне пример того, что я должен использовать для хранения html-писем в отправленной папке, когда у меня есть id= и msgid= в URL-адресе тега img без отображения и ?

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Если вы используете цитируемую печатную форму, вам нужно экранировать знаки равенства (= 3D).

0 голосов
/ 10 октября 2019

Попробуйте что-то вроде этого

$message= nl2br($message);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...