Php 带附件的Drupal电子邮件

Php 带附件的Drupal电子邮件,php,email,drupal,drupal-7,Php,Email,Drupal,Drupal 7,我已经在这里多次看到这个问题,但是没有一个解决方案对我有效,所以我将再次发布它 我正在尝试在drupal中将文档附加到电子邮件。我有一个自定义表单,其中包含一个文件字段。我有文件存档上传工作正常,我有文件路径确认。我在Drupal中安装了MIME和邮件系统模块。我在为项目继承的自定义模块中添加了一个_mail函数。根据我在示例中看到的内容,我是这样理解的: function champs_admin_mail($key, &$message, $params) { $attac

我已经在这里多次看到这个问题,但是没有一个解决方案对我有效,所以我将再次发布它

我正在尝试在drupal中将文档附加到电子邮件。我有一个自定义表单,其中包含一个文件字段。我有文件存档上传工作正常,我有文件路径确认。我在Drupal中安装了MIME和邮件系统模块。我在为项目继承的自定义模块中添加了一个_mail函数。根据我在示例中看到的内容,我是这样理解的:

function champs_admin_mail($key, &$message, $params) {

    $attachment = array(
        'filecontent' => DRUPAL_ROOT .'/sites/our.website.com/files/'.$params['upload'],
        'filename' => $params['upload'],
        'filemime' => $params['filemime']
    );

    $langcode = $message['language']->language;
    $message['subject'] = $params['subject'];
    $message['body'][] = $params['body'];
    $message['params']['attachments'][] = $attachment;

}
在我提交的表格中,我有这个功能,应该组成电子邮件和附加文件。一切似乎都正常,但没有依恋

function champs_admin_email_form_submit($form, &$form_state)
{

    set_time_limit(1000);

    //Database stuff here

   if($form_state['values']['upload']!=''){

        $attachment = array(
            'filecontent' => DRUPAL_ROOT .'/sites/our.website.com/files/'.$form_state['values']['upload'],
            'filename' => $form_state['values']['upload'],
            'filemime' => $form_state['values']['filemime']
        );
    }else{
        $attachment = array();
    };


    foreach($result as $row)
    {
        $to = $form_state['values']['template'] == "supervisor" ? $row->supervisor_email : $row->mail;

        $params = array(
            '!champname' => $row->fname . " " . $row->lname,
            '!champfirstname' => $row->fname,
            '!champlastname' => $row->lname,
            '!supervisor' => $row->supervisor_name,
            'subject' => $form_state['values']['subject'],
            'body' => is_array($form_state['values']['body']) ? check_markup($form_state['values']['body']['value'], $form_state['values']['body']['format']) : $form_state['values']['body'],
            'attachment' => $attachment,
        );

        drupal_mail('champs', 'custom', $to, language_default(), $params,$form_state['values']['from']);

    }

    drupal_set_message("Email sent");
    $form_state['redirect'] = 'admin/config/system/champs';
}

关于我在这个过程中遗漏了什么,或者MIME或邮件系统是否需要额外配置的任何想法。谢谢,如果有人看到任何不寻常的东西,请告诉我。

我最终使用直接的HTML和标题重写了邮件函数,并且只使用PHP中的邮件函数。

您是否检查了文件是否正确上载,$form_state['values']['filemime']是否正确?它确实正确上载,并且当我确实存在文件时,结果证明是真的。有更好的“drupal方式”吗?我直接使用在文件系统类别的管理区域中设置的公共文件。我使用从drupal上载返回的mime类型。