2010-12-01 16 views
0

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

+1

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

+0

Vous pourriez vouloir regarder dans SwiftMailer. http://swiftmailer.org – Jonah

+0

Ou PHPMailer http://phpmailer.worxware.com/ –

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); } 

reference