Отправленные письма с phpmailer не отправляются в папку «Отправленные» IMAP - PullRequest
13 голосов
/ 19 декабря 2011

в моей онлайн-системе CRM я управляю входящей почтой по протоколу IMAP.Сейчас я делаю отправку писем с помощью phpmailer и протокола SMTP.Все хорошо, но у меня есть одна странная вещь.Как сделать так, чтобы отправленные с помощью phpmailer письма отправлялись в папку «Отправленные» IMAP?

Ответы [ 4 ]

14 голосов
/ 23 декабря 2011

Я нашел более простой способ сделать это. 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");
}

Хорошо работает.

13 голосов
/ 28 июля 2015

Теперь в 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");
}
4 голосов
/ 19 декабря 2011

Ну, это довольно сложно, но можно сделать.

Взгляните на функцию imap-append .
Подключившись к потоковому ресурсу IMAP, вы можетеиспользуйте imap-append () для добавления ваших писем в папку «Отправленные» вашей учетной записи IMAP.

Но чтение комментариев покажет вам, что это немного утомительно, но, конечно, не невозможно - вам, вероятно, придется что-то кодировать самостоятельно, поскольку phpmailer не поддерживает это из коробки.(и, скорее всего, будет слишком трудоемким для реализации вместо того, чтобы делать что-то самостоятельно).

1 голос
/ 19 декабря 2011
  • Вы должны ретранслировать отправленную почту через хост IMAP
  • Хост IMAP должен поддерживать функцию (что очень немногие делают)

Если любой изэти два пункта не соответствуют действительности, краткий ответ «Вы не можете».Короче говоря, на самом деле дело только в провайдере почты, а не в вашем коде.

Несмотря на то, что я ненавижу M $, Exchange - это единственное место, где у них действительно все правильно - если вы используете сервер Exchange, всеэто обрабатывается для вас.

...