J’ai besoin d’envoyer un fichier pdf avec mail, est-ce possible ? Il s’agit de mon script de mail :
Ce que je dois ajouter ?
J’ai besoin d’envoyer un fichier pdf avec mail, est-ce possible ? Il s’agit de mon script de mail :
Ce que je dois ajouter ?
Je suis d'accord avec @MihaiIorga dans les commentaires -- utiliser les PHPMailer script. Vous semblez comme vous êtes la rejeter parce que vous voulez l'option plus facile. Trus moi, PHPMailer est l'option plus facile.... par une très grande marge par rapport à essayer de faire vous-même avec de PHP ( mail()
fonction. PHP mail()
fonction n'est vraiment pas très bon.
Pour utiliser PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Maintenant, l'envoi d'e-mails avec des pièces jointes va d'être incroyablement difficile à incroyablement facile:
$email = new PHPMailer();
$email->From = 'you@example.com';
$email->FromName = 'Your Name';
$email->Subject = 'Message Subject';
$email->Body = $bodytext;
$email->AddAddress( 'destinationaddress@example.com' );
$file_to_attach = 'PATH_OF_YOUR_FILE_HERE';
$email->AddAttachment( $file_to_attach , 'NameOfFile.pdf' );
return $email->Send();
C'est juste que une ligne, $email->AddAttachment();
-- vous ne pouvez pas demander plus facile.
Si vous le faites avec PHP mail()
fonction, vous devrez écrire des piles de code, et vous aurez probablement beaucoup de vraiment difficile de trouver des bugs.
Swiftmailer est une autre facile-à-utiliser un script qui protège automatiquement contre le courrier électronique de l'injection et rend les pièces jointes un jeu d'enfant. J'ai aussi fortement décourager les à l'aide de PHP ( mail()
fonction.
Pour l'utiliser:
lib
dossier de votre projetrequire_once 'lib/swift_required.php';
Maintenant, ajoutez le code lorsque vous avez besoin de mail:
// Create the message
$message = Swift_Message::newInstance()
->setSubject('Your subject')
->setFrom(array('webmaster@mysite.com' => 'Web Master'))
->setTo(array('receiver@example.com'))
->setBody('Here is the message itself')
->attach(Swift_Attachment::fromPath('myPDF.pdf'));
//send the message
$mailer->send($message);
Plus d'informations et d'options peut être trouvé dans la Swiftmailer Docs.
Pour envoyer un e-mail avec pièce jointe, nous devons utiliser le MIME multipart/mixed type qui spécifie que le mélange de types seront inclus dans le courriel. En outre, nous voulons utiliser multipart/alternative de type MIME pour envoyer à la fois simple texte et la version HTML de l'email.Jetez un oeil à l'exemple:
<?php
//define the receiver of the email
$to = 'youraddress@example.com';
//define the subject of the email
$subject = 'Test email with attachment';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
//read the atachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
$attachment = chunk_split(base64_encode(file_get_contents('attachment.zip')));
//define the body of the message.
ob_start(); //Turn on output buffering
?>
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Hello World!!!
This is simple text email message.
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>
--PHP-alt-<?php echo $random_hash; ?>--
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name="attachment.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>--
<?php
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";
?>
Comme vous pouvez le voir, l'envoi d'un e-mail avec pièce jointe est facile à accomplir. Dans l'exemple précédent, nous avons MIME multipart/mixed type, et à l'intérieur nous avons multipart/alternative type MIME qui spécifie deux versions de l'e-mail. Pour ajouter une pièce jointe à notre message, on peut lire les données à partir du fichier spécifié dans une chaîne de caractères, le coder avec base64, le couper en petits morceaux pour s'assurer qu'il correspond aux spécifications MIME et de l'inclure comme une pièce jointe.
Prises à partir d' ici.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.