Saya mencoba mengirim lampiran dengan email saya dari Drupal. Dalam modul khusus saya, saya telah menambahkan:
class SponsorprogramMailSystem implements MailSystemInterface {
/**
* Concatenate and wrap the e-mail body for plain-text mails.
*
* @param $message
* A message array, as described in hook_mail_alter().
*
* @return
* The formatted $message.
*/
public function format(array $message) {
$message['body'] = implode("\n\n", $message['body']);
return $message;
}
/**
* Send an e-mail message, using Drupal variables and default settings.
*
* @see http://php.net/manual/en/function.mail.php
* @see drupal_mail()
*
* @param $message
* A message array, as described in hook_mail_alter().
* @return
* TRUE if the mail was successfully accepted, otherwise FALSE.
*/
public function mail(array $message) {
$mimeheaders = array();
foreach ($message['headers'] as $name => $value) {
$mimeheaders[] = $name . ': ' . mime_header_encode($value);
}
$line_endings = variable_get('mail_line_endings', MAIL_LINE_ENDINGS);
return mail(
$message['to'],
mime_header_encode($message['subject']),
// Note: e-mail uses CRLF for line-endings. PHP's API requires LF
// on Unix and CRLF on Windows. Drupal automatically guesses the
// line-ending format appropriate for your system. If you need to
// override this, adjust $conf['mail_line_endings'] in settings.php.
preg_replace('@\r?\n@', $line_endings, $message['body']),
// For headers, PHP's API suggests that we use CRLF normally,
// but some MTAs incorrectly replace LF with CRLF. See #234403.
join("\n", $mimeheaders)
);
}
}
dan saya dapat mengirim email dengan html, bagian itu berfungsi.
Tetapi ketika saya mencoba untuk melampirkan file itu tidak tiba di kotak masuk saya. Saya lampirkan file pengujian saya seperti ini:
$attachment = array(
'filecontent' => file_get_contents(DRUPAL_ROOT . '/README.txt'),
'filename' => 'test.txt',
'filemime' => 'text/plain',
);
Tapi tidak ada yang datang.
Adakah yang tahu bagaimana cara memperbaikinya?
Jawaban:
Mungkin ada cara lain, tetapi saya telah menemukan sistem surat dan mimemail itu modul harus diinstal untuk mengirim email dengan lampiran. Jadi instal kedua modul ini terlebih dahulu.
Kemudian implementasikan hook_mail untuk mengirimkan lampiran ke $ message
Ada dua cara untuk menambahkan lampiran, Anda bisa melewatkan filecontent atau filepath saat menambahkan file yang tidak dikelola sebagai lampiran (tidak direkam dalam DB) atau meneruskan objek file saat menambahkan file yang dikelola.
Saat menambahkan file yang tidak dikelola:
atau
Dengan menggunakan cara filecontent, Anda mungkin akan mendapatkan dua kesalahan php pada 08 Jan 2015 termasuk
Saat menambahkan file terkelola:
Kemudian kirim email dengan:
sumber
Ini berhasil untuk saya.
sumber
Saya ingat saya ingin melakukannya sebelumnya, saya mencoba ini dan bekerja untuk saya
sumber
file_get_contents()
melakukan trik untukku. jika tidak menggunakannya, saya mendapatkan lampiran file yang rusak. Terima kasih.