J'ai besoin d'envoyer un pdf avec mail, est-ce possible?
$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);
Qu'est-ce que je rate?
mail()
fonction est beaucoup plus difficile que prévu, pour gagnerRéponses:
Je suis d'accord avec @MihaiIorga dans les commentaires - utilisez le script PHPMailer. Vous semblez le rejeter parce que vous voulez l'option la plus simple. Croyez-moi, PHPMailer est l'option la plus facile par une très grande marge par rapport à essayer de le faire vous-même avec la fonction intégrée de PHP
mail()
. Lamail()
fonction de PHP n'est vraiment pas très bonne.Pour utiliser PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Désormais, l'envoi d'e-mails avec des pièces jointes va être incroyablement difficile à incroyablement facile:
C'est juste cette ligne
$email->AddAttachment();
- vous ne pourriez pas demander plus facilement.Si vous le faites avec la
mail()
fonction de PHP , vous écrirez des piles de code et vous aurez probablement beaucoup de bugs vraiment difficiles à trouver.la source
mail()
, mais pour travailler avec des pièces jointes, c'est une évidence.mail()
fonction pour ajouter des pièces jointes. Cette réponse ne m'aide pas à le faire.Vous pouvez essayer d'utiliser le code suivant:
Edit 14-juin-2018
pour plus de lisibilité dans une partie de l'utilisation du fournisseur de messagerie
$body .= $eol . $message . $eol . $eol;
et$body .= $eol . $content . $eol . $eol;
la source
'Example message with <b>html</b>'
, alors Content-Type devrait l'êtretext/html
plutôt quetext/plain
. Je poste le commentaire en son nom car il n'a pas assez de représentant pour poster des commentaires et j'ai signalé la réponse pour suppression.$file
après y avoir fait référence$filename
?Pour la mise à jour de sécurité PHP 5.5.27
la source
$nmessage .= "--".$uid."\r\n";
et après la dernière partie MIME, utilisez$nmessage .= "--".$uid."--";
(comme indiqué ci-dessus).Swiftmailer est un autre script facile à utiliser qui protège automatiquement contre l'injection d'e-mails et fait des pièces jointes un jeu d'enfant. Je déconseille également fortement d'utiliser la fonction intégrée de PHP
mail()
.Utiliser:
lib
dossier dans votre projetrequire_once 'lib/swift_required.php';
Ajoutez maintenant le code lorsque vous devez envoyer un mail:
Plus d'informations et d'options peuvent être trouvées dans les documents Swiftmailer .
la source
Pour envoyer un e-mail avec pièce jointe, nous devons utiliser le type MIME en plusieurs parties / mixte qui spécifie que les types mixtes seront inclus dans l'e-mail. De plus, nous voulons utiliser le type MIME en plusieurs parties / alternatif pour envoyer à la fois le texte brut et la version HTML de l'e-mail.
Comme vous pouvez le voir, l'envoi d'un e-mail avec pièce jointe est facile à réaliser. Dans l'exemple précédent, nous avons un type MIME à plusieurs parties / mixte, et à l'intérieur, nous avons un type MIME à plusieurs parties / alternatif qui spécifie deux versions de l'e-mail. Pour inclure une pièce jointe à notre message, nous lisons les données du fichier spécifié dans une chaîne, les codons en base64, les divisons en petits morceaux pour nous assurer qu'elles correspondent aux spécifications MIME, puis les incluons en tant que pièces jointes.
Pris d' ici .
la source
Cela fonctionne pour moi. Il joint également plusieurs pièces jointes. facilement
la source
Après avoir lutté pendant un certain temps avec des pièces jointes mal formatées, voici le code que j'ai utilisé:
la source
Concept de travail:
la source
Aucune des réponses ci-dessus n'a fonctionné pour moi en raison de leur format de pièce jointe spécifié (
application/octet-stream
). Utilisezapplication/pdf
pour de meilleurs résultats avec les fichiers PDF.la source
"From: $from$eolMIME-Version: 1.0$eol"
par"From: $from" . "$eolMIME-Version: 1.0$eol"
$eol
par" . "$eol
cette façon son tout fait d'un seul coup.la source
Code HTML:
Code PHP:
la source
J'ai fini par écrire ma propre fonction d'envoi / d'encodage d'e-mails. Cela a bien fonctionné pour moi pour l'envoi de pièces jointes PDF. Je n'ai pas utilisé les autres fonctionnalités en production.
Remarque: Bien que la spécification soit assez catégorique sur le fait que vous devez utiliser \ r \ n pour séparer les en-têtes, j'ai trouvé que cela ne fonctionnait que lorsque j'utilisais PHP_EOL. Je n'ai testé cela que sur Linux. YMMV
la source
Copie du code de cette page - fonctionne en mail ()
Il commence ma création d'une fonction mail_attachment qui peut être appelée plus tard. Ce qu'il fait plus tard avec son code de pièce jointe.
Il a plus de détails sur sa page et répond à quelques problèmes dans la section commentaires.
la source
Concept 100% fonctionnel pour envoyer des e-mails avec pièce jointe en php:
J'ai utilisé ce code pour l'envoi de messages google smtp avec pièce jointe ....
Remarque: Téléchargez la bibliothèque PHPMailer à partir d'ici -> https://github.com/PHPMailer/PHPMailer
la source