2013-04-20 2 views
1

Это фрагмент кода, который я использую для отправки электронной почты с вложением, но он не работает. Выход, который я получаю, включает в себя большое количество хэш-кода (я так думаю). Что нужно сделать, чтобы отправить screenshot.rar как привязанность?Вложение почты с использованием php mail()?

<?php 

     $to = "[email protected]"; 

     $subject = "A test email"; 

     $random_hash = md5(date('r', time())); 

     $headers = "From: [email protected]\r\n"; 

     $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 

     $attachment = chunk_split(base64_encode(file_get_contents("screenshot.rar"))); 

     $output = " 
     --PHP-mixed-$random_hash 
     Content-Type: multipart/alternative; boundary='PHP-alt-$random_hash' 
     --PHP-alt-$random_hash 
     Content-Type: text/plain; charset='iso-8859-1' 
     Content-Transfer-Encoding: 7bit 

     Hello World! 
     This is the simple text version of the email message. 

     --PHP-alt-$random_hash 
     Content-Type: text/html; charset='iso-8859-1' 
     Content-Transfer-Encoding: 7bit 

     <h2>Hello World!</h2> 
     <p>This is the <b>HTML</b> version of the email message.</p> 

     --PHP-alt-$random_hash-- 

     --PHP-mixed-$random_hash 
     Content-Type: application/zip; name=screenshot.rar 
     Content-Transfer-Encoding: base64 
     Content-Disposition: attachment 

     $attachment 
     --PHP-mixed-$random_hash--"; 

     echo @mail($to, $subject, $output, $headers); 

    ?> 
+0

Ваша жизнь была бы намного проще, если бы вы использовали готовое решение для рассылки, такое как PHPMailer. –

+0

Я никогда не использовал его. Можете ли вы рассказать мне, как использовать его в xampp? – user2280276

+0

Загрузите скрипт и посмотрите некоторые учебники для него, их много по всему Интернету, это очень популярно. –

ответ

3

PHP Mailer - лучший вариант в этом вопросе. Попробуй. Click Here

Пример:

<?php 
require 'class.phpmailer.php'; 
$mail = new PHPMailer; 
$mail->IsSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 
$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->AddAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->AddAddress('[email protected]');    // Name is optional 
$mail->AddReplyTo('[email protected]', 'Information'); 
$mail->AddCC('[email protected]'); 
$mail->AddBCC('[email protected]'); 


$mail->WordWrap = 50;         // Set word wrap to 50 characters 
$mail->AddAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->AddAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$mail->IsHTML(true);         // Set email format to HTML 


$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->Send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
    exit; 
} 
echo 'Message has been sent'; 
?> 

Это пример кода обеспечивают с помощью PHPMailer.

0

Zend_Mail библиотека была бы идеальной для этого. Библиотеки написаны именно так, чтобы людям в вашей ситуации не приходилось создавать эти пакеты с нуля, использовать их.

Документация действительно хорошая (ссылка выше), и вам просто нужно загрузить Zend Framework и включить ее на свой include_files в php.ini.

Смежные вопросы