Saya perlu mengirim pdf dengan surat, apakah mungkin?
$to = "xxx";
$subject = "Subject" ;
$message = 'Example message with <b>html</b>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: xxx <xxx>' . "\r\n";
mail($to,$subject,$message,$headers);
Apa yang saya lewatkan?
mail()
fungsi jauh lebih sulit daripada yang Anda harapkan, demi waktu Anda, coba gunakan PHPMailerJawaban:
Saya setuju dengan @MihaiIorga di komentar - gunakan skrip PHPMailer. Anda terdengar seperti menolaknya karena menginginkan opsi yang lebih mudah. Percayalah, PHPMailer adalah opsi yang lebih mudah dengan margin yang sangat besar dibandingkan dengan mencoba melakukannya sendiri dengan
mail()
fungsi bawaan PHP .mail()
Fungsi PHP sebenarnya tidak terlalu bagus.Untuk menggunakan PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Sekarang, mengirim email dengan lampiran berubah dari sangat sulit menjadi sangat mudah:
Hanya saja satu baris
$email->AddAttachment();
- Anda tidak bisa meminta lebih mudah.Jika Anda melakukannya dengan
mail()
fungsi PHP , Anda akan menulis tumpukan kode, dan Anda mungkin akan menemukan banyak sekali kesulitan untuk menemukan bug.sumber
mail()
, tetapi untuk bekerja dengan lampiran itu mutlak tidak ada artinya.mail()
fungsi untuk menambahkan lampiran. Jawaban ini tidak membantu saya melakukan itu.Anda dapat mencoba menggunakan kode berikut:
Edit 14-Juni-2018
untuk lebih mudah dibaca di beberapa penggunaan penyedia email
$body .= $eol . $message . $eol . $eol;
dan$body .= $eol . $content . $eol . $eol;
sumber
'Example message with <b>html</b>'
, maka Content-Type seharusnyatext/html
bukantext/plain
. Saya memposting komentar atas namanya karena dia tidak memiliki cukup perwakilan untuk memposting komentar dan saya telah menandai jawaban untuk dihapus.$file
setelah merujuknya$filename
?Untuk pembaruan keamanan PHP 5.5.27
sumber
$nmessage .= "--".$uid."\r\n";
, dan setelah bagian MIME akhir, gunakan$nmessage .= "--".$uid."--";
(seperti yang ditunjukkan di atas).Swiftmailer adalah skrip lain yang mudah digunakan yang secara otomatis melindungi terhadap injeksi email dan membuat lampiran menjadi mudah. Saya juga sangat tidak menyarankan menggunakan
mail()
fungsi bawaan PHP .Menggunakan:
lib
folder di proyek Andarequire_once 'lib/swift_required.php';
Sekarang tambahkan kode ketika Anda perlu mengirim surat:
Informasi dan opsi lebih lanjut dapat ditemukan di Swiftmailer Documents .
sumber
Untuk mengirim email dengan lampiran, kita perlu menggunakan tipe MIME multipart / campuran yang menentukan bahwa tipe campuran akan dimasukkan dalam email. Selain itu, kami ingin menggunakan tipe MIME multipart / alternatif untuk mengirim versi email teks biasa dan HTML. Lihat contohnya:
Seperti yang Anda lihat, mengirim email dengan lampiran mudah dilakukan. Pada contoh sebelumnya kami memiliki tipe MIME multipart / campuran, dan di dalamnya kami memiliki tipe MIME multipart / alternatif yang menentukan dua versi email. Untuk menyertakan lampiran ke pesan kami, kami membaca data dari file yang ditentukan ke dalam string, menyandikannya dengan base64, membaginya dalam potongan yang lebih kecil untuk memastikan bahwa itu cocok dengan spesifikasi MIME dan kemudian memasukkannya sebagai lampiran.
Diambil dari sini .
sumber
Ini bekerja untuk saya. Itu juga melampirkan banyak lampiran juga. dengan mudah
sumber
Setelah berjuang sebentar dengan lampiran berformat buruk, ini adalah kode yang saya gunakan:
sumber
Konsep kerja:
sumber
Tidak ada jawaban di atas yang berfungsi untuk saya karena format lampiran yang ditentukan (
application/octet-stream
). Gunakanapplication/pdf
untuk hasil terbaik dengan file PDF.sumber
"From: $from$eolMIME-Version: 1.0$eol"
dengan"From: $from" . "$eolMIME-Version: 1.0$eol"
$eol
dengan" . "$eol
cara yang semuanya dilakukan dalam satu gerakan.sumber
Kode HTML:
Kode PHP:
sumber
Saya akhirnya menulis fungsi pengiriman / penyandian email saya sendiri. Ini berfungsi baik bagi saya untuk mengirim lampiran PDF. Saya belum menggunakan fitur-fitur lain dalam produksi.
Catatan: Meskipun speknya cukup tegas bahwa Anda harus menggunakan \ r \ n untuk memisahkan header, saya menemukan itu hanya berfungsi ketika saya menggunakan PHP_EOL. Saya hanya menguji ini di Linux. YMMV
sumber
Menyalin kode dari halaman ini - berfungsi dalam surat ()
Dia mulai saya membuat fungsi mail_attachment yang bisa dipanggil nanti. Yang dia lakukan nanti dengan kode lampirannya.
Dia memiliki lebih banyak detail di halamannya dan menjawab beberapa masalah di bagian komentar.
sumber
100% Konsep bekerja untuk mengirim email dengan lampiran di php:
Saya menggunakan kode ini untuk pengiriman email google smtp dengan Lampiran ....
Catatan: Unduh Perpustakaan PHPMailer dari sini -> https://github.com/PHPMailer/PHPMailer
sumber