簡體   English   中英

帶附件的Drupal電子郵件

[英]Drupal email with attachments

我已經多次看到這里提出的問題,但是似乎沒有一種解決方案適合我,因此我將再次發布它。

我正在嘗試將文檔附加到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中使用了mail()函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM