Vous n'êtes pas connecté.







Hello, j'ai essayé de faire un mail() pour envoyer une pièce jointe, et finalement, ayant des problèmes, j'ai essayé divers scripts pour comprendre ce que je faisais faux. Aucun ne fonctionne, et parfois j'ai la pièce jointe encodée directement affichée en fichier texte, et parfois aucune pièce jointe. Voici l'un des scripts :
//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";J'utilise une image, donc je met le type image/jpeg. J'ai essayé de mettre l'adresse relative (images/image.jpg) et absolue (http://...), et cela ne fonctionne pas. Pourtant mon hébergeur accepte mail() et l'upload de fichiers également.
Quelqu'un a-t-il une idée ?
Merci d'avance, salutations
PS: Je suis actuellement à l'armée (obligatoire en Suisse), et donc je ne répondrai pas avant samedi prochain, jour de ma prochaine permission.
TOP Hors ligne


Salut,
Si tu veux moins te prendre la tête, je te suggère d'utiliser la classe PHPMailer dispo sur sourceforge : très complète, elle te permet d'envoyer des pj avec des mails en plusieurs formats. GNU/GPL powered 
FYI RTFM ASAP => Tux : La Légende <=
NewsletTux
TOP Hors ligne


J'ai cherché aussi un peu, et je suis arrivé à cette solution.
Mais c'est certains que ça serait plu intéressant de comprendre...
TOP Hors ligne







Ju a écrit:
J'ai cherché aussi un peu, et je suis arrivé à cette solution.
Mais c'est certains que ça serait plu intéressant de comprendre...
Ouais j'avais vu aussi, mais je voulais essayer moi-même. Bon tant pis, en attendant, je prend ça. Merci pour le conseil 
Salutations
TOP Hors ligne