2014-08-13 2 views
0

Я видел вопрос, заданный здесь много раз, но ни одно из решений, похоже, не работает для меня, поэтому я собираюсь опубликовать его снова.Drupal электронная почта с вложениями

Я пытаюсь прикрепить документ к письму в drupal. У меня есть настраиваемая форма, которая включает в себя поле файла. У меня есть файл, загружающий загрузку, работающий нормально, и у меня есть путь к подтвержденному файлу. Я установил модули MIME и Mail System в Drupal. Я добавил функцию _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 или Mail System нуждается в дополнительной настройке. Спасибо и дайте мне знать, если кто-нибудь увидит что-то необычное.

+0

Вы проверили, что файл загружен правильно, и $ form_state ['values'] ['filemime'] верен? – user4035

+0

Он загружается правильно, и когда я делал file_exists, это выглядело как правда. Есть ли лучший способ «drupal» сделать это? Я использую открытый файл напрямую, который установлен в области администратора в категории «Файловая система». –

+0

Я использую тип mime, который возвращается из загрузки drupal. –

ответ

0

Я закончил переписывать функцию рассылки с использованием прямого HTML и заголовков и просто использовал функцию mail() в PHP.

Смежные вопросы