You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9配置Mime Mail等组件后,表单附件仍以链接显示的求助

解决Drupal 9中Webform+Mime Mail+PHPMailer附件不生效的问题

以下是针对你遇到的问题的分步排查和解决方法:

1. 检查Mime Mail全局配置

  • 进入 /admin/config/system/mimemail 页面:
    • 确认Send mail using选项选择的是PHPMailer,而非默认的PHP mail()函数(部分服务器的mail()会限制附件发送)。
    • 确保Allow attachments选项处于勾选状态,全局附件开关未开启会直接覆盖Webform处理器的设置。

2. 验证Webform邮件处理器细节

  • 打开对应Webform的邮件处理器编辑页面:
    • 确认Email format设置为Mime Mail,而非纯文本或普通HTML格式——只有选择Mime Mail作为邮件格式,其附件逻辑才会被触发。
    • 检查表单文件字段的权限:如果使用私有文件系统存储上传文件,需确保提交表单的用户(含匿名用户)拥有该文件的临时访问权限,否则Drupal无法读取文件生成附件。

3. 排查PHPMailer配置

  • 进入 /admin/config/system/phpmailer 页面:
    • 验证SMTP连接状态(若使用SMTP发送):部分SMTP服务器会限制附件大小或类型,可尝试发送一封测试邮件确认服务器支持附件传输。
    • 检查Max attachment size值:若上传的文件超过该限制,附件会被自动忽略,需调整为符合需求的大小。

4. 调试与日志排查

  • 开启Drupal调试日志:
    进入 /admin/config/development/logging 将日志级别设为Debug,提交表单后查看watchdog日志,寻找附件处理相关的错误(如文件读取失败、权限不足、PHPMailer报错等)。
  • 用hook_mail_alter调试邮件构建过程:
    自定义模块中添加以下代码,查看邮件数组中是否包含正确的附件信息:
    function mycustommodule_mail_alter(&$message) {
      // 替换[YOUR_WEBFORM_ID]为你的Webform ID
      if (strpos($message['id'], 'webform_mail_[YOUR_WEBFORM_ID]') !== FALSE) {
        \Drupal::logger('custom_debug')->debug('邮件附件信息: @attachments', ['@attachments' => print_r($message['attachments'], TRUE)]);
      }
    }
    
  • 独立测试Mime Mail附件功能:
    编写简单的自定义邮件代码,排除Webform的影响,确认Mime Mail本身能正常发送附件:
    // 替换[FILE_ID]为测试文件的ID
    $file = \Drupal\file\Entity\File::load([FILE_ID]);
    $params = [
      'subject' => '附件测试邮件',
      'body' => ['测试邮件内容'],
      'attachments' => [
        [
          'filecontent' => file_get_contents($file->getFileUri()),
          'filename' => $file->getFilename(),
          'filemime' => $file->getMimeType(),
        ],
      ],
    ];
    \Drupal::service('plugin.manager.mail')->mail('mycustommodule', 'test_attachment', 'test@example.com', \Drupal\Core\Language\LanguageInterface::LANGCODE_DEFAULT, $params);
    

5. 模块版本兼容性检查

确保所有使用的模块都是Drupal 9兼容的稳定版本:

  • Webform:6.x分支
  • Mime Mail:2.x分支
  • PHPMailer:1.x分支

版本不兼容可能导致底层逻辑冲突,引发附件功能失效。

内容的提问来源于stack exchange,提问作者Tortue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:15:48