如何使用 IMAP 和 php 将邮件附件下载到特定文件夹

2023-11-24

我正在开发一个网站,用户可以在其中邮寄票证并将任何类型的文件附加到特定的邮件 ID。我需要将邮件主题、内容和附件添加到数据库中。我正在使用 cron 来执行此操作。除了附件之外,一切都很完美。我看过一些创建下载链接的帖子。由于我使用的是 cron,因此无法手动执行。

        $hostname = '{xxxx.net:143/novalidate-cert}INBOX';
        $username = '[email protected]';
        $password = 'zzzz';
        /* try to connect */
        $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to : ' . imap_last_error());
        $emails = imap_search($inbox,'ALL');

                if($emails) {
          $output = '';
          rsort($emails);
          foreach($emails as $email_number) {
            $structure = imap_fetchstructure($inbox, $email_number); 
            $name = $structure->parts[1]->dparameters[0]->value; // name of the file
            $type = $structure->parts[1]->type; //type of the file 
}}

我能够获取文件的类型和名称,但不知道如何进一步进行

任何人请帮助我。谢谢...


要将附件另存为文件,您需要解析邮件的结构并取出附件本身的所有部分(内容处置)。您应该将其包装到自己的类中,以便您可以轻松访问并且随着时间的推移可以更轻松地处理错误,电子邮件解析可能很脆弱:

$savedir = __DIR__ . '/imap-dump/';

$inbox = new IMAPMailbox($hostname, $username, $password);
$emails = $inbox->search('ALL');
if ($emails) {
    rsort($emails);
    foreach ($emails as $email) {
        foreach ($email->getAttachments() as $attachment) {
            $savepath = $savedir . $attachment->getFilename();
            file_put_contents($savepath, $attachment);
        }
    }
}

这些类的代码或多或少地包装了imap_...函数,但对于附件类,它也会进行结构解析。你可以在github上找到代码。希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 IMAP 和 php 将邮件附件下载到特定文件夹 的相关文章

  • 使用 PDO 的基于 PHP 类的用户系统 - 调用非对象上的成员函数prepare()

    我做了相当多的研究 故障排除和搜索 试图解决我的问题 但没有运气 所以这是错误 调用非对象上的成员函数prepare 生成此错误的代码位于我的用户 Auth 类中 如下所示 this gt dbManager gt db gt prepar
  • WooCommerce - 谢谢和“我的帐户”查看订单页面上的自定义通知

    在 WooCommerce 上我有一个自定义字段days manufacture对于具有不同 整数 值的每个产品 我还有这个代码 可以在购物车页面上显示一条消息 其中的最高值是 生产天数 add action woocommerce bef
  • PHP:switch 与 if [重复]

    这个问题在这里已经有答案了 哪种形式更有效率 这个 switch var case 1 break case 2 break 或者这个 if var 1 elseif var 2 在性能方面 性能方面完全无关 As PHPBench htt
  • 使用 PHP 将 HTML 片段包裹在 div 中(并从 HTML 标签生成目录)

    我原来的 HTML 看起来像这样 h1 Page Title h1 h2 Title of segment one h2 img src img jpg alt An image of segment one p Paragraph one
  • Google BigQuery 与 PHP 集成

    我需要帮助将 google bigquery 代码集成到 PHP 中 所以我可以从 php 代码本身执行查询和其他类型的操作 需要您的帮助并建议我一些工作示例链接 提前致谢 这是一段代码 正确地创建一个Google Client using
  • Laravel 克隆查询字符串

    是否可以克隆一个查询字符串 以便我可以编写一次并在不影响其他结果的情况下进行长时间的更改 query DB table users gt where id 123 queryGet query queryPaginate query que
  • 如何通过传递国家代码或国家名称在php中获取时区

    我使用一些 api 有国家代码和国家名称 有什么方法可以在 php ini 中获取给定国家代码和国家名称的时区 我有这样的数据 address Object city continent Asia continent code AS cou
  • 干预/图像上传错误{{图像源不可读}}

    我正在尝试添加个人资料图片上传拉拉维尔 5 1 我用的是Intervention Image打包但当我尝试上传图像时出现此错误 AbstractDecoder php 第 302 行中的 NotReadableException 图像源不可
  • PHP 中 glob() 中的转义空格?

    我在 PHP 中有以下函数 除了名称中带有空格的文件外 该函数运行良好 Good picture jpg例如 这里是 function getphotolist currentalbum photos glob currentalbum J
  • 使 IPTC 数据可搜索

    我对 IPTC 元数据有疑问 是否可以通过 IPTC 元数据 关键字 搜索不在数据库中的图像并显示它们 我将如何执行此操作 我只需要一个基本的想法 我知道 PHP 有 iptcparse 函数 我已经编写了一个函数来获取画廊文件夹和所有子目
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • php平台安装询问我intl扩展,但似乎已经安装

    在 orocrm 安装期间 使用 symfony 2 开发的平台 我收到此错误 Fatal error Uncaught exception Symfony Component Intl Exception MethodArgumentVa
  • PDO 从 Postgres 获取小数秒

    当我查询日期时间字段时postgresql 9 6 用一个简单的 pdo 语句 PHP7 sql SELECT date FROM table stmt adapter gt createStatement sql stmt gt prep
  • 如何防止显示菱形问号符号,即使使用 mb_substr 和 utf-8

    我读过其他一些问题 尝试了答案 但最终没有结果 我得到的是例如这个 我无法删除那个奇怪的问号 我所做的就是获取 RSS feed 的内容 该内容也被编码为内容使用希腊语 有没有什么办法解决这一问题 div div
  • 完整日历 - 向事件对象添加额外属性

    可能是由于我缺乏理解 但我使用 PHP 返回 JSON 字符串来带回事件数据
  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M
  • 需要从我的应用程序将文件上传到谷歌文档并存储对上传文件的引用

    我正在开发一个基于谷歌应用程序的基本系统 就像我之前定义的那样 我正在构建一个简单的订购系统 并且对于每个下订单 我都会附加一个文件或文档 我希望能够设置它 以便我上传的任何文件都会上传到谷歌文档中 并且我能够以某种方式从我自己的应用程序维
  • 在子目录中使用反向代理运行 Symfony 5

    我喜欢在反向代理后面运行 Symfony 5 应用程序 该代理提供以下端点 https my domain service1 https my domain service1 代理配置基本上是这样的 ProxyPass marketsy h
  • 单个返回语句与多个返回语句? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML

随机推荐

  • 如何将角度材料步进器步数更改为任何图标或文本?

    角度材料步进器对我来说有以下问题 我无法从文档中找到这些问题 如何显示任何字符串或 html 而不是步进索引 数字 怎么才能显示mat工具提示当鼠标悬停在任何垫子步骤上时 我正在使用最新版本材质 角 IO 不幸的是 现在不可能使用材料中的本
  • 云上的 Node.js TCP 套接字服务器 [Heroku/AppFog]

    可以在 Node js 上运行面向 TCP 套接字的应用程序Cloud 更具体地说Heroku or AppFog 它不会是一个 Web 应用程序 而是一个用于客户端程序访问的服务器 基本思想是利用Cloud 扩展和易于使用的平台 我知道这
  • jQuery 中文档就绪的不同方式?

    这些是同一件事吗 即表示文档准备就绪的方式 function and function jQuery 或者两者之间是否有区别 如果有那么我什么时候应该使用哪个 第一个是快捷方式 ready 第二个是无效的 因为您试图调用一个不可调用的对象
  • 使用 JavaScript 清除 HTML 页面

    有没有办法使用 JavaScript 函数删除页面上现有内容的部分内容 像这样 i i
  • Chrome 和 Firefox 中的 Javascript 提升

    在 Chrome 和 Firefox 中运行它会给出不同的答案 function if true function f alert yes else function f alert no f 在 Chrome 中 结果是 否 在 Fire
  • 形成和排序正整数数组的最快策略

    在 Java 中 什么更快 创建 填充然后排序一个整数数组 如下所示 int a int 1000 for int i 0 i lt a length i not sure about the syntax a i Maths rand 1
  • 如何使用 CAKeyframeAnimation 对 CoreGraphics 形状绘制进行动画处理

    我正在尝试在 UIView 子类中对 UIBezierPath 在我的示例中是三角形 的绘制进行动画处理 然而 整个子视图是动画的 而不是形状 我在动画中缺少什么吗 void drawRect CGRect rect CAShapeLaye
  • ASP.NET MVC 3:将应用程序移至虚拟目录中。我必须改变什么?

    我一直在开发 MVC 3 应用程序 我使用的是 VS 2010 的内置 Web 服务器 今天 由于各种原因 我被要求将其移动到虚拟目录中并在 IIS 7 下运行 仍然在我的开发 PC 上 现在它的 URL 是localhost MyVirt
  • 使用 MediaCodec 和 MTK Codec 编码时选择 H264 Profile

    我们有一个 Android 应用程序 可以将视频编码为 H264 在所有以前尝试过的 Android 设备上 这都会编码为 Baseline 配置文件 这正是我所需要的 在 Lenovo Yoga 10 上 编解码器为 OMX MTK VI
  • 使用 web3 以太坊调用智能合约方法

    尝试使用以太坊解决区块链问题时 我在尝试与已部署的合约交互时遇到了问题 我想要实现的是调用一个方法来显示添加到使用 Geth 本地部署的私有区块链中的信息 我无法从我的智能合约中调用任何函数 我一直想知道我是否做错了什么 有人可以告诉我如何
  • 如何使用 Perl 对 PDF 文件进行全文搜索?

    我有一堆 PDF 文件 我的 Perl 程序需要对它们进行全文搜索以返回哪些文件包含特定字符串 迄今为止我一直在使用这个 my search results grep i l string pdf 其中 string 是要查找的文本 然而
  • jquery:两个数字的百分比

    EDITED 感谢所有提供支持的人 我将与您分享最好的工作脚本 希望可以帮助正在寻找相同解决方案的其他人 document ready function price1 price2 keyup function var priceOne p
  • XML 属性与 XML 元素

    在工作中 我们被要求创建 XML 文件以将数据传递到另一个离线应用程序 然后该应用程序将创建第二个 XML 文件来传回 以便更新我们的一些数据 在此过程中 我们一直在与其他应用程序的团队讨论 XML 文件的结构 我想出的示例基本上是这样的
  • Ruby 中的“Monkey Patching”究竟意味着什么?

    根据维基百科 一个猴子补丁 is 延长或修改运行时的方法 动态语言代码 不改变原始来源 代码 同一条目中的以下陈述让我感到困惑 在 Ruby 中 术语 猴子补丁 是 被误解为任何动态 对类的修改通常是 用作动态的同义词 在运行时修改任何类
  • 列出 CSS 自定义属性(CSS 变量)

    我在样式表中设置了一些 CSS 自定义属性 root bc fff bc primary eee bc secondary ddd 如果我已经知道 CSS 变量的名称 我可以单独检索它们 如下所示 console log getComput
  • 如何使用javascript读取epub文件

    如何使用javascript读取epub文件 我尝试了 epubjs 但这不适合我的要求 还有其他可用的替代 JavaScript 库吗 Readium 基金会刚刚发布了 Readium Web Components 请参阅http rea
  • Django 升级 1.9 -> 1.10 出现“RemovedInDjango110Warning”导入错误

    简单之后pip install U django我收到以下错误 Environment Request Method GET Request URL http localhost 8000 shelf Django Version 1 10
  • 捆绑 .NET dll 以在无 .NET 的计算机中运行应用程序?

    AFAIK ngen将 MSIL 转换为本机代码 也称为 pre JIT 但我从未过多关注它对启动性能的影响 男士应用程序仍然需要 NET基类库 运行时 由于基类库拥有我们的 NET 程序集所需的一切 正确吗 是否可以将框架的 DLL 与我
  • 从 Laravel 中的多选表单中获取选定值

    要生成默认选择项目的下拉列表 请执行以下操作 echo Form select size array L gt Large M gt Medium S gt Small S 因此 我生成了一个默认选择多个项目的下拉列表 方法如下 echo
  • 如何使用 IMAP 和 php 将邮件附件下载到特定文件夹

    我正在开发一个网站 用户可以在其中邮寄票证并将任何类型的文件附加到特定的邮件 ID 我需要将邮件主题 内容和附件添加到数据库中 我正在使用 cron 来执行此操作 除了附件之外 一切都很完美 我看过一些创建下载链接的帖子 由于我使用的是 c