Intereting Posts
Как вы получаете доступ к сеансу пользователей из службы в Symfony2? Недопустимое исключение аргумента при генерации объектов из существующей базы данных Мне нужно некоторое руководство по платежным шлюзам Доступ запрещен для пользователя «www-data» @ localhost – как с этим бороться? Утечка памяти при выполнении запроса Doctrine в цикле Простой вопрос чтения XML (PHP) Определение URL-адреса объекта данных – Silverstripe 3.1 Parse Apache регистрируется в PHP с помощью preg_match Ошибка simplexml_load_file в PHP 5.3 Масштабируемое хранилище файлов Создайте новый массив, используя значения из значений многомерного массива Как использовать хранение и использование переменных сеанса на разных страницах? что это уведомление, относящееся к API Google Диска – Библиотека клиентов PHP – настройка uploadType для возобновляемой загрузки Вводят значения различных значений в 2 поля

Отправленные письма с phpmailer не отправляются в папку «Отправленные» IMAP

в моей онлайн-системе 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 не поддерживает это из коробки (и, скорее всего, это будет слишком много времени для реализации вместо того, чтобы что-то делать сами).

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

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

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