Muszę wysłać pdf z pocztą, czy to możliwe?
$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);
czego mi brakuje?
mail()
funkcją jest o wiele trudniejsze niż się spodziewasz, ze względu na swój czas, spróbuj użyć PHPMailerOdpowiedzi:
Zgadzam się z @MihaiIorga w komentarzach - użyj skryptu PHPMailer. Brzmisz tak, jakbyś go odrzucał, ponieważ chcesz łatwiejszej opcji. Zaufaj mi, PHPMailer jest łatwiejszą opcją z bardzo dużym marginesem w porównaniu do próby zrobienia tego sam z wbudowaną
mail()
funkcją PHP .mail()
Funkcja PHP naprawdę nie jest zbyt dobra.Aby użyć PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Teraz wysyłanie wiadomości e-mail z załącznikami staje się niesamowicie trudne do niewiarygodnie łatwego:
To tylko jedna linia
$email->AddAttachment();
- nie można prosić o nic łatwiejszego.Jeśli zrobisz to z
mail()
funkcją PHP , będziesz pisał stosy kodu i prawdopodobnie będziesz mieć wiele naprawdę trudnych do znalezienia błędów.źródło
mail()
, ale do pracy z załącznikami nie trzeba się zastanawiać.mail()
funkcji do dodawania załączników. Ta odpowiedź nie pomaga mi tego zrobić.Możesz spróbować użyć następującego kodu:
Edytuj 14 czerwca 2018 r
dla większej czytelności w niektórych zastosowaniach dostawcy poczty e-mail
$body .= $eol . $message . $eol . $eol;
i$body .= $eol . $content . $eol . $eol;
źródło
'Example message with <b>html</b>'
, to typem treści powinno byćtext/html
zamiasttext/plain
. Publikuję komentarz w jego imieniu, ponieważ nie ma on wystarczającej liczby przedstawicieli, aby opublikować komentarze, a ja oznaczyłem odpowiedź do usunięcia.$file
po odwołaniu się do niego$filename
?Aktualizacja zabezpieczeń PHP 5.5.27
źródło
$nmessage .= "--".$uid."\r\n";
, a po ostatniej części MIME użyj$nmessage .= "--".$uid."--";
(jak pokazano powyżej).Swiftmailer to kolejny łatwy w użyciu skrypt, który automatycznie chroni przed wstrzyknięciem wiadomości e-mail i sprawia, że załączniki są dziecinnie proste . Odradzam również korzystanie z wbudowanej
mail()
funkcji PHP .Używać:
lib
folder w swoim projekcierequire_once 'lib/swift_required.php';
Teraz dodaj kod, gdy musisz wysłać pocztą:
Więcej informacji i opcji można znaleźć w dokumentach Swiftmailer .
źródło
Aby wysłać wiadomość e-mail z załącznikiem, musimy użyć wieloczęściowego / mieszanego typu MIME, który określa, że mieszane typy będą zawarte w wiadomości e-mail. Ponadto chcemy używać wieloczęściowego / alternatywnego typu MIME do wysyłania wiadomości e-mail w wersji zwykłego tekstu lub w formacie HTML. Spójrz na przykład:
Jak widać, wysyłanie wiadomości e-mail z załącznikiem jest łatwe do zrealizowania. W poprzednim przykładzie mamy wieloczęściowy / mieszany typ MIME, a wewnątrz niego mamy wieloczęściowy / alternatywny typ MIME, który określa dwie wersje wiadomości e-mail. Aby dołączyć załącznik do naszej wiadomości, odczytujemy dane z określonego pliku na ciąg, kodujemy go base64, dzielimy na mniejsze fragmenty, aby upewnić się, że jest zgodny ze specyfikacjami MIME, a następnie dołączamy go jako załącznik.
Zabrano stąd .
źródło
To działa dla mnie. Dołącza także wiele załączników. z łatwością
źródło
Po dłuższej walce ze źle sformatowanymi załącznikami użyłem następującego kodu:
źródło
Koncepcja pracy:
źródło
Żadna z powyższych odpowiedzi nie zadziałała ze względu na określony format załącznika (
application/octet-stream
). Użyjapplication/pdf
dla najlepszych rezultatów z plikami PDF.źródło
"From: $from$eolMIME-Version: 1.0$eol"
z"From: $from" . "$eolMIME-Version: 1.0$eol"
$eol
z" . "$eol
tym sposób jej wszystko zrobić za jednym zamachem.źródło
Kod HTML:
Kod PHP:
źródło
W końcu napisałem własną funkcję wysyłania / kodowania e-maili. Działa mi to dobrze w przypadku wysyłania załączników PDF. Nie wykorzystałem innych funkcji w produkcji.
Uwaga: Pomimo tego, że specyfikacja jest dość wyraźna, że musisz używać \ r \ n do oddzielania nagłówków, zauważyłem, że działała tylko wtedy, gdy użyłem PHP_EOL. Testowałem to tylko w systemie Linux. YMMV
źródło
Kopiowanie kodu z tej strony - działa w mail ()
Zaczyna moje tworzenie funkcji mail_attachment, którą można wywołać później. Co robi później z kodem załącznika.
Ma więcej szczegółów na swojej stronie i odpowiada na niektóre problemy w sekcji komentarzy.
źródło
W 100% działająca koncepcja wysyłania wiadomości e-mail z załącznikiem w php:
Użyłem tego kodu do wysyłania e-maili smtp google z załącznikiem ....
Uwaga: Pobierz stąd bibliotekę PHPMailer -> https://github.com/PHPMailer/PHPMailer
źródło