в моей онлайн-системе CRM я контролирую входящие письма с протоколом IMAP. Теперь я отправляю письма с phpmailer и SMTP-протоколом. Все в порядке, но у меня есть одна странная вещь. Как отправить отправленный с почтовыми сообщениями phpmailer в папку «Отправленные» IMAP?
В PHPMailer теперь есть метод getSentMIMEMessage, который возвращает всю строку MIME
$mail = new PHPMailer(); //code to handle phpmailer $result = $mail->Send(); if ($result) { $mail_string = $mail->getSentMIMEMessage(); imap_append($ImapStream, $folder, $mail_string, "\\Seen"); }
Я нашел более простой способ сделать это. PHPmailer подготавливает электронную почту как строку – все, что вам нужно сделать, это поместить ее в правую папку IMAP.
Я расширил класс phpmailer с помощью этого кода (поскольку vars защищены, я не могу их достичь):
class PHPMailer_mine extends PHPMailer { public function get_mail_string() { return $this->MIMEHeader.$this->MIMEBody; }}
PHP-код:
$mail= new PHPMailer_mine(); //code to handle phpmailer $result=$mail->Send(); if ($result) { $mail_string=$mail->get_mail_string(); imap_append($ImapStream, $folder, $mail_string, "\\Seen"); }
Это работает хорошо.
Ну, это довольно сложно, но можно сделать.
Взгляните на функцию imap-append .
При подключении к ресурсу потока IMAP вы можете использовать imap-append () для добавления своих писем в папку Sent вашей учетной записи IMAP.
Но чтение через комментарии покажет вам, что это немного утомительно для достижения, но, конечно, не невозможно – вам, вероятно, придется что-то кодировать самостоятельно, поскольку phpmailer не поддерживает это из коробки (и, скорее всего, это будет слишком много времени для реализации вместо того, чтобы что-то делать сами).
Если одна из этих двух точек неверна, короткий ответ: «Вы не можете». Короче говоря, на самом деле это зависит от поставщика почты, а не от вашего кода.
Насколько я ненавижу M $, Exchange – это одно место, где у них действительно все в порядке – если вы используете сервер Exchange, все это обрабатывается для вас.