Drupal 7 отправляет электронные письма без вложений


У меня проблема с отправкой почты с вложением в Drupal 7.

Я попробовал обычный модуль, я попробовал mimemail, я попробовал Zend Framework (или что-то в этом роде)... но это просто не работает. Я получаю электронное письмо с сообщением, но оно не содержит вложения.

Вот мой код:

function my_form_submit() {
if(!empty($_POST['body'])) {
$postbody = $_POST['body'];
$userpost = $_POST['usermail'];


  $attachment = array(
  'filecontent' => file_get_contents('sites/default/files/test.txt'),
  'filename' => 'test.txt',
  'filemime' => 'text/plain',
  );


 $body = '  <html>
               <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" bgcolor="#ffffff" >
               <span style="width:100%;float:left">
               <img style="width:20%; float:left" src="cid:logo" alt="" />
               <div style="width:80%; float:left">
               </div></span>
               <span style="width:100%; float:left">'.$_POST['body'].'</span>
               </body></html>';

        $my_module = 'mime';
        $my_mail_token = 'notice';


  $message = array(
   'to' => '"'.addslashes(mime_header_encode('Request')) .'"<'.$_POST['mail'].'>',
   'subject' => t('[Hinnaparing]'),
   'body' => $body,
   'headers' => array(
   'From' => '[email protected]',
   'MIME-Version' => '1.0',
   'Content-Type' => 'text/html;charset=utf-8',
   'Content-Transfer-Encoding' => '8Bit',
      'X-Mailer' => 'Drupal',
   ),
        );
       $message['headers']['CC'] = '<'.$_POST['usermail'].'>';
      $message['params']['attachments'][] = $attachment;

          $system = drupal_mail_system($my_module, $my_mail_token);
        if ($system->mail($message)) {
          // Success.
        }
        else {
   // Failure.
  }
}
}

Я установил модуль drupal SwiftMailer, и теперь он отправляет вложение, но без тела и темы письма. Что я должен сделать, чтобы отправить их?

function my_form_submit() {
if(!empty($_POST['body'])) {
$postbody = $_POST['body'];
$userpost = $_POST['usermail'];
$ourpost = $_POST['mail'];



 $body = '  <html>
               <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" bgcolor="#ffffff" >
               <span style="width:100%;float:left">
               <img style="width:20%; float:left" src="cid:logo" alt="" />
               <div style="width:80%; float:left">
               <h1>Hinnaparing № '.$file.'</h1>
               </div></span>
               <span style="width:100%; float:left">'.$_POST['body'].'</span>
               </body></html>';


  //File two (not managed by Drupal).
  $fileone = new stdClass();
  $fileone->uri = 'sites/default/files/034.jpg';
  $fileone->filename = 'drupal_logo.jpg';
  $fileone->filemime = 'image/jpeg';

  // Add attachments.
  $p['files'][] = $fileone;

  // Send e-mail.
  drupal_mail('modulename', 'key',$userpost, language_default(), $p,'[email protected]');
 drupal_mail('modulename', 'key',$ourpost, language_default(), $p,'[email protected]');



}
}
Author: Sergio, 2013-06-09

2 answers

Беглый поиск в гугле показывает, что это в лучшем случае сложно.

Попробуйте этот класс:

Https://github.com/gollyg/Attachment-Email

(через: http://www.metachunk.com/blog/sending-e-mails-attachments-drupal-7)

Или используйте SwiftMailer:

Http://swiftmailer.org

Я не уверен, будет ли последний частью Drupal 8, но он, по крайней мере, будет совместим.

 2
Author: Denis de Bernardy, 2013-06-12 14:34:37

Я не вижу, что вы реализовали hook_mail? Здесь вы обычно указываете тему и текст электронного письма. Это также описано в документации по почтовой программе Swift.

 0
Author: sbrattla, 2013-09-26 19:29:51