PHPMailer如何在PHP中发送后将电子邮件保存在Outlook上的"已发送邮件"文件夹中



我正在使用PHPMailer从公司内部stmp服务器发送电子邮件通知。电子邮件已成功发送,但未存储在Outlook上的"已发送邮件"文件夹中。

<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;
require 'phpmailer/vendor/autoload.php';

$mail = new PHPMailer(true);
try { 
$mail->SMTPDebug = SMTP::DEBUG_SERVER;                     
$mail->isSMTP();                                            
$mail->Host       = 'smtpinternal.xxxx.com';  
$mail->SMTPAuth = false;
$mail->SMTPAutoTLS = false; 
$mail->Username   = 'xxxxnoreply@xxxx.com';                     
$mail->Password   = 'xxxx';                               
$mail->Port       = 25; 
$mail->setFrom('xxxxnoreply@xxxx.com', 'xxxx_NoReply');
$distributionLists = explode(',', $items['Distribution List']);
foreach ($distributionLists as $distributionList) {    
if (!empty($distributionList) && strpos( $distributionList, '@' ) !== false ) { 
$mail->addAddress(trim($distributionList)); } 
}
$contacts = explode(',', $items['Contact']);
foreach ($contacts as $contact) {
if (!empty($contact) && strpos( $contact, '@' ) !== false ) { 
$mail->addCC(trim($contact)); } 
}
$mail->isHTML(true);                                  
$mail->Subject = 'Invoice Report';
$mail->Body = "Dear Client, <br><br> Please find below today's invoices <br><br>". $table ."<br> Please contact your representative on Email address : ". $items['Contact'] ."<br><br> Best regards. <br><br> Please do not reply to this message, as it has been sent by a system email address.";
$mail->send();
$mail_string = $mail->getSentMIMEMessage();
$path = "{".$mail->Host.":25/imap/ssl/novalidate-cert}";
$imapStream = imap_open($path, $mail->Username, $mail->Password);
imap_append($ImapStream, $path, $mail_string, "\Seen");

} catch (Exception $e) { 
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; }

?>

imap_open函数返回以下错误:

imap_open(): Couldn't open stream {smtpinternal.xxxx.com:25/imap/ssl/novalidate-cert}

我尝试将$path更新为

{"imap.smtpinternal.xxxx.com:25/imap/ssl/novalidate-cert}{smtpinternal.xxxx.com:25/imap/ssl/authuser=xxxxnoreply@xxxx.com}

但仍然得到同样的错误。请提出任何建议,请问我应该如何声明我的路径变量以指向Outlook中的"已发送邮件"文件夹?谢谢。

我猜问题是您正在尝试在端口 25 上使用 IMAP,这是入站 SMTP 的端口。您应该对 IMAP 使用端口 143,如果要对端口进行 TLS 加密,则应使用 993,这是 PHPMailer 提供的 IMAP 上传示例所做的。

我无法告诉您要使用哪些IMAP路径 - 您需要参考Outlook的文档以获取更多信息。

最新版本的Exchange(如 Office 365 使用的那些(已将通过 SMTP 发送的邮件保存在用户的"已发送邮件"文件夹中。

相关内容

最新更新