如何使用 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 将邮件附件下载到特定文件夹 的相关文章

  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码

随机推荐

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

    角度材料步进器对我来说有以下问题 我无法从文档中找到这些问题 如何显示任何字符串或 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