Bluehost: PHPMailer сохраняет отправленное сообщение в Отправленные - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь отправить электронное письмо с помощью PHPMailer , все работает нормально, но теперь я хочу получить копию отправляемого письма в Sent Items.

. сайт в настоящее время размещен в Bluehost . Я попытался следовать примеру PHPMailer - GMail , но я застрял на том, какой путь мне следует указать.

Из примера PHPMailer - GMail путь для Sent Items is:

{imap.gmail.com:993/imap/ssl} [Gmail] / Отправленная почта

Я не знаю, по какому пути я долженуказывать. В моем коде все работает нормально, отсутствует только путь для отправленного элемента.

<?php
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

$username = 'john@mydomain.com';
$password = 'password';

function save_mail( $mail ) {
    //path or folder for sent items
    $path = "{imap.mydomain.com:993/imap/ssl}[...]/..."; //what exactly is the path for my sent item.

    //Tell your server to open an IMAP connection using the same username and password as you used for SMTP
    $imapStream = imap_open( $path, $mail->Username, $mail->Password );
    $result = imap_append( $imapStream, $path, $mail->getSentMIMEMessage() );
    imap_close( $imapStream );
    return $result;
}

function send(){
    $mail = new PHPMailer(true);
    $mail->isSMTP();
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;
    $mail->Host = 'mail.mydomain.com';
    $mail->Port = 465;
    $mail->SMTPSecure = 'ssl';
    $mail->SMTPAuth = true;
    $mail->Username = $username;
    $mail->Password = $password;
    $mail->setFrom( $username, 'John Doe' );
    $mail->addAddress( 'someone@example.com', 'David Doe' );
    $mail->Subject = 'TEST SUBJECT';
    $mail->msgHTML('<b>TEST</b>');
    $mail->AltBody = 'TEST';

    if ( !$mail->send() ) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
        if (save_mail($mail)) {
            echo "Message saved!";
        }
    }
}

?>

1 Ответ

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

Спасибо Макс за идею функции imap_list .

Это дает мне список путей для моих почтовых каталогов.

  $host = '{imap.mydomain.com/ssl/novalidate-cert}';

  $mail = 'support@mydomain.com';
  $pass = 'password';


  $mbox = imap_open($host, $mail, $pass, OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$list = imap_list($mbox, $host, "*");
if (is_array($list)) {
    foreach ($list as $val) {
        echo imap_utf7_decode($val) . "\n";
    }
} else {
    echo "imap_list failed: " . imap_last_error() . "\n";
}

imap_close($mbox);

?>

при использовании {imap.mydomain.com} или {imap.mydomain.com:993/imap/ssl} выдает ошибку:

не удается подключиться: сбой сертификата для imap.mydomain.com: имя сервера не соответствует сертификату: / OU = контроль домена подтвержден / OU = Размещено в BlueHost.Com, INC / OU = PositiveSSL Wildcard / CN = *. Bluehost.com

Проблема с сертификатом, к счастью, я нашел этот вопрос и я использую следующий хост:

{imap.mydomain.com/ssl/novalidate-cert}

и путь, который я ищупереслать отправленную почту в отправленные элементы:

{imap.mydomain.com/ssl/novalidate-cert} INBOX.Sent

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