gpt4 book ai didi

php - 如何在 PHP 中将电子邮件附件保存到服务器?

转载 作者:可可西里 更新时间:2023-11-01 13:20:28 25 4
gpt4 key购买 nike

在两天的大部分时间里,我一直在与 PHP 的电子邮件阅读功能作斗争。我正在编写一个脚本来从邮箱中读取电子邮件并将所有附件保存到服务器上。如果您曾经做过类似的事情,您可能会理解我的痛苦:PHP 不能很好地处理电子邮件!

我已经连接到 POP3 服务器,我可以迭代文件。以下是代码的粗略概要:

if (!$mbox = imap_open ("{myserver.com:110/pop3/notls}INBOX", "u", "p"))
die ('Cannot connect/check mail! Exiting');

if ($hdr = imap_check($mbox))
$msgCount = $hdr->Nmsgs;
else
die ("Failed to get mail");

foreach ($overview as $message) {
$msgStruct = imap_fetchstructure($mbox, $message->msgno);

// if it has parts, there are attachments that need reading
if ($msgStruct->parts) {
foreach ($msgStruct->parts as $key => $part) {
switch (strtoupper($part->subtype)) {
case 'GIF': case 'JPEG':case 'PNG':

//do something - but what?!

break;
}
}
}
}

我已经标记了我卡住的地方。我可以使用 imap_fetchbody($mbox, $message->msgno, $key+1) 但这让我得到了一堆这样的数据:

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8S
EhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEU
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAAR
CAHiAi0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
...

我相信这是 MIME 数据。我需要它作为图像!我在 Internet 上看到过几个声称可以完成所需魔法的类(class)。我无法让他们中的任何一个工作。我不明白为什么我觉得这很难!

简而言之,我正在寻找可以将原始 MIME 字符串转换为真实数据的东西。

最佳答案

我找到了如何使用 PHP 处理电子邮件的快速指南:here .

在那个页面的底部有一个附件正文echo:

if (substr($ContentType,0,4) == "text") {
echo imap_qprint($fileContent);
} else {
echo imap_base64($fileContent);
}

我想这就是您可能需要的...

(编辑:在你的情况下,如果它总是图像,你可以跳过 if 部分。当然,保存文件而不是回显它:)

关于php - 如何在 PHP 中将电子邮件附件保存到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com