我正在使用一个类来解析和查看电子邮件,它很有用: https://github.com/barbushin/php-imap
现在我正在尝试将附件保存到服务器,但我从未使用过电子邮件附件,所以不确定它是如何工作的。
这是我回复电子邮件的代码:
attachments:
array(3) {
["image002.jpg@01D0838E.40768C10"]=>
object(PhpImap\IncomingMailAttachment)#21 (3) {
["id"]=>
string(30) "image002.jpg@01D0838E.40768C10"
["name"]=>
string(12) "image002.jpg"
["filePath"]=>
NULL
}
["image004.png@01D0838E.40768C10"]=>
object(PhpImap\IncomingMailAttachment)#12 (3) {
["id"]=>
string(30) "image004.png@01D0838E.40768C10"
["name"]=>
string(12) "image004.png"
["filePath"]=>
NULL
}
["image005.jpg@01D0838E.40768C10"]=>
object(PhpImap\IncomingMailAttachment)#32 (3) {
["id"]=>
string(30) "image005.jpg@01D0838E.40768C10"
["name"]=>
string(12) "image005.jpg"
["filePath"]=>
NULL
}
}
现在电子邮件内容很好,附件回应如下:
{{1}}
由于路径为空,我不确定我的脚本是否存在问题,或者如果这是正常但没有补丁我如何将图像保存到我的服务器,以便我可以在电子邮件中显示它们。我做了一堆谷歌搜索,但我认为它可能是这个类的不同的应用程序,并没有真正的任何文档,我可以找到。我正在努力的是我不理解电子邮件附件的概念。
附件作为$ _POST发送我可以将它们从临时文件夹移动到永久文件夹,因为我在$ _files信息中有路径值但是这里我只有一个图像ID和图像名称所以我不知道在哪里图像实际上是。有关如何获取附件信息并将文件保存到服务器的任何想法,以便我可以将它们显示给用户?
答案 0 :(得分:1)
阅读源代码:您需要指定一个目录来存储附件。
class Mailbox {
# ....
public function __construct($imapPath, $login, $password,
$attachmentsDir = null, $serverEncoding = 'UTF-8')
如果是附件will not be saved locally,则不是filePath
。
答案 1 :(得分:0)
这对我有用:
private $mailbox; //ImapStream
public function __construct()
{
$this->mailbox = new ImapMailbox('{host}INBOX', 'user', 'pass', __DIR__);
$this->mailbox->setAttachmentsDir('tmp/');
}
public function getListOfMails()
{
$mailsIds = $this->mailbox->searchMailbox('ALL');
if(!$mailsIds) {
die('Mailbox is empty');
}
$mails = $this->mailbox->getMailsInfo($mailsIds);
$mails = array_reverse($mails);
return $mails;
}
public function getFullMail($mailId)
{
$mail = $this->mailbox->getMail($mailId);
echo $mail->replaceInternalLinks('tmp/);
}