PHP Conference Japan 2024

imap_append

(PHP 4、PHP 5、PHP 7、PHP 8)

imap_append将字符串消息附加到指定的邮箱

描述

imap_append(
    IMAP\Connection $imap,
    string $folder,
    string $message,
    ?string $options = null,
    ?string $internal_date = null
): bool

将字符串 message 附加到指定的 folder

参数

imap

一个 IMAP\Connection 实例。

folder

邮箱名称,有关更多信息,请参阅 imap_open()

警告

除非禁用 imap.enable_insecure_rsh,否则将不受信任的数据传递给此参数是不安全的。

message

要附加的消息,作为字符串

当与 Cyrus IMAP 服务器通信时,必须使用“\r\n”作为您的行尾终止符,而不是“\n”,否则操作将失败

options

如果提供,options 也将写入 folder

internal_date

如果设置此参数,它将设置附加消息上的 INTERNALDATE。该参数应为符合 rfc2060 规范的 date_time 值的日期字符串。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.1.0 imap 参数现在期望一个 IMAP\Connection 实例;以前,期望一个有效的 imap 资源
8.0.0 optionsinternal_date 现在可以为空。

示例

示例 #1 imap_append() 示例

<?php
$imap
= imap_open("{imap.example.org}INBOX.Drafts", "username", "password");

$check = imap_check($imap);
echo
"附加前邮件数量:". $check->Nmsgs . "\n";

imap_append($imap, "{imap.example.org}INBOX.Drafts"
, "From: [email protected]\r\n"
. "To: [email protected]\r\n"
. "Subject: test\r\n"
. "\r\n"
. "这是一条测试消息,请忽略\r\n"
);

$check = imap_check($imap);
echo
"附加后邮件数量:". $check->Nmsgs . "\n";

imap_close($imap);
?>

添加注释

用户贡献的注释 3 个注释

rixsta at hotmail dot com
11 年前
嗨,

由于我们在这方面已经努力了一段时间,所以我想分享一下我们如何使 imap_append 与所有 MIME 部分(包括附件)一起正常工作。如果您正在发送电子邮件并且还希望将已发送的邮件附加到“已发送邮件”文件夹,我认为没有比这更容易的方法了,如下所示

1) 使用 SwiftMailer 通过 PHP 发送邮件。
$message = Swift_Message::newInstance("主题在此处");
(然后添加发件人、收件人、正文、附件等)
$result = $mailer->send($message);

2) 在步骤 1) 中构建邮件时,将其保存到变量中,如下所示

$msg = $message->toString(); (这会创建 imap_append() 所需的完整 MIME 邮件!之后,您可以像这样调用 imap_append

imap_append($imap_conn,$mail_box,$msg."\r\n","\\Seen");

希望这对读者有所帮助,并防止人们做我们开始做的事情 - 手工制作 MIME 消息 :-0
Krzysiek
9 年前
您可以将 PHPMailer ( https://github.com/PHPMailer/PHPMailer/ ) 与 imap 一起使用。

<?php
// 在创建邮件内容后,您必须运行 preSend() - send() 方法的一部分
$mail->send();
// 您可以使用 getSentMIMEMessage() 方法获取整个原始邮件
imap_append($imap, $mailserver.'INBOX.Sent',$mail->getSentMIMEMessage(), "\\Seen");
kaminski at istori dot com
14 年前
创建 $internal_date 时要使用的日期格式字符串为 'd-M-Y H:i:s O'。
To Top