J'utilise la fonction mail de PHP pour envoyer un email, mais je vais devoir joindre un fichier avec ce message. Pour la plupart, je crois que l'élément qui va être joint va être un fichier texte et je pourrais juste faire écho le contenu dans l'e-mail si je devais le faire, mais je suis inquiet que finalement le fichier type deviendra un document PDF, Word, etc, car les personnes qui téléchargeront les fichiers ne connaîtront pas la différence entre le texte brut et leurs propres formats.Envoyer une pièce jointe J'ai pensé à la fonction mail() de PHP
0
A
Répondre
3
Il y a beaucoup qui va dans cela, je vous recommande fortement de travailler avec un package qui fait tout le travail pour vous, comme PHPMailer
Il y a des choses plus importantes que vous pouvez passer votre temps à faire, quelqu'un d'autre a déjà fait le travail.
+1
+1 pour ne pas réinventer la roue. – zzzzBov
0
<?php
$to = '[email protected]';
$from = '[email protected]';
$subject = 'See Attachments';
$message = 'Please review the following attachments.';
// Define a list of FILES to send along with the e-mail. Key = File to be sent. Value = Name of file as seen in the e-mail.
$attachments = array(
'/tmp/WEDFRTS' => 'first-attachment.png',
'/tmp/some-other-file' => 'second-attachment.png'
);
// Define any additional headers you may want to include
$headers = array(
'Reply-to' => '[email protected]',
'Some-Other-Header-Name' => 'Header Value'
);
$status = mailAttachments($to, $from, $subject, $message, $attachments, $headers);
if($status === True) {
print 'Successfully mailed!';
} else {
print 'Unable to send e-mail.';
}
function mailAttachments($to, $from, $subject, $message, $attachments = array(), $headers = array(), $additional_parameters = '') {
$headers['From'] = $from;
// Define the boundray we're going to use to separate our data with.
$mime_boundary = '==MIME_BOUNDARY_' . md5(time());
// Define attachment-specific headers
$headers['MIME-Version'] = '1.0';
$headers['Content-Type'] = 'multipart/mixed; boundary="' . $mime_boundary . '"';
// Convert the array of header data into a single string.
$headers_string = '';
foreach($headers as $header_name => $header_value) {
if(!empty($headers_string)) {
$headers_string .= "\r\n";
}
$headers_string .= $header_name . ': ' . $header_value;
}
// Message Body
$message_string = '--' . $mime_boundary;
$message_string .= "\r\n";
$message_string .= 'Content-Type: text/plain; charset="iso-8859-1"';
$message_string .= "\r\n";
$message_string .= 'Content-Transfer-Encoding: 7bit';
$message_string .= "\r\n";
$message_string .= "\r\n";
$message_string .= $message;
$message_string .= "\r\n";
$message_string .= "\r\n";
// Add attachments to message body
foreach($attachments as $local_filename => $attachment_filename) {
if(is_file($local_filename)) {
$message_string .= '--' . $mime_boundary;
$message_string .= "\r\n";
$message_string .= 'Content-Type: application/octet-stream; name="' . $attachment_filename . '"';
$message_string .= "\r\n";
$message_string .= 'Content-Description: ' . $attachment_filename;
$message_string .= "\r\n";
$fp = @fopen($local_filename, 'rb'); // Create pointer to file
$file_size = filesize($local_filename); // Read size of file
$data = @fread($fp, $file_size); // Read file contents
$data = chunk_split(base64_encode($data)); // Encode file contents for plain text sending
$message_string .= 'Content-Disposition: attachment; filename="' . $attachment_filename . '"; size=' . $file_size. ';';
$message_string .= "\r\n";
$message_string .= 'Content-Transfer-Encoding: base64';
$message_string .= "\r\n\r\n";
$message_string .= $data;
$message_string .= "\r\n\r\n";
}
}
// Signal end of message
$message_string .= '--' . $mime_boundary . '--';
// Send the e-mail.
return mail($to, $subject, $message_string, $headers_string, $additional _parameters); }
double possible de [Comment envoyer l'email avec pièce jointe en utilisant PHP] (http://stackoverflow.com/questions/2027069). Découvrez [cette réponse] (http://stackoverflow.com/questions/2027069/how-to-send-email-with-attachment-using-php/2027112#2027112). – netcoder
Vous pourriez vouloir regarder dans SwiftMailer. http://swiftmailer.org – Jonah
Ou PHPMailer http://phpmailer.worxware.com/ –