Прикрепить файл к электронной почте


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

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

function my_module_mail_alter(&$message) {
  $file_content = file_get_contents('sites/default/files/tmp/test.pdf');
  $message["params"]["attachments"] = array(
    'filecontent' => $file_content,
    'filename' => 'test.pdf',
    'filemime' => 'application/pdf'
  );
}

Я отладил MailManager.php непосредственно перед отправкой электронного письма, и переменные $message param['attachement'] содержат допустимое содержимое из кода выше.

Я установил модули: SMTP (чтобы я мог отправлять электронные письма с моего локального компьютера), MIMEMAIL и включил Почтовую систему Электронные письма отправляются без каких-либо проблем, но опять же никогда с вложением.

Я не знаю, что я делаю не так, есть идеи?

Ядро: 8.6

Author: anonymous, 2018-10-31

1 answers

Вот ответ, который является просто продолжением комментария @berramou

$file = file_load($fid);
  $message["params"]["attachments"][] =[
    'filepath' => $file->getFileUri(),
    'filemime' => '' // argument must be present, but can remain empty
  ];
}
 1
Author: lordZ3d, 2018-10-31 11:54:34