2012-02-16 2 views
0

Я хочу использовать почтовую программу php для отправки нескольких вложений в почте. Но проблема в том, как ее использовать. Где его скачать, как его установить. Я искал 3 дня, но запутался, два или три учебника, которые я использовал, не работает и не смущает меня. Я хочу один тег файла, который загружает несколько вложений и отправляет их по электронной почте. Я сделал с отправкой электронной почты с одним приложением успешно.Несколько вложений

Пожалуйста, руководство меня. И, пожалуйста, дайте те ссылки, которые действительно работают для этой цели.

+0

Вместо этого используйте [SwiftMailer] (http://swiftmailer.org/). –

+0

okk. любой учебник, который действительно работает, который ведет меня –

+0

См. документацию. http://swiftmailer.org/docs/introduction.html –

ответ

1

PHPMailerdownloaded от its SourceForge page.

Теперь к коду, который в основном взяты из примеров, приведенных в ZIPball:

<?php 
require_once 'class.phpmailer.php'; 

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch 

try { 
    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->AddAddress('[email protected]', 'John Doe'); 
    $mail->SetFrom('[email protected]', 'First Last'); 
    $mail->Subject = 'PHPMailer Test Subject via mail(), advanced'; 
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically 
    $mail->MsgHTML(file_get_contents('contents.html')); 
    $mail->AddAttachment('images/phpmailer.gif');  // attachment 
    $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment 
    $mail->Send(); 
    echo "Message Sent OK</p>\n"; 
} catch (phpmailerException $e) { 
    echo $e->errorMessage(); //Pretty error messages from PHPMailer 
} catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 
?> 
+0

PHPMailer - это немного беспорядок - существует по меньшей мере две разные версии, с несовместимыми именами и функциями переменных. Вот почему я склонен рекомендовать Swiftmailer. –

+0

Исходный код sourceforge не изменился с того момента, когда я начал использовать его 7 лет назад или около того. Я замечаю, что во всем мире пользователи программного обеспечения пытаются перейти на google-код, поскольку я последний раз смотрел - какой беспорядок! (как вы говорите) Мне также нравится SwiftMailer и широко его использовать, но он попросил PHPMailer. – Treffynnon

0

Это сочетание нескольких сценариев и немного чтения. Я не добавлял никакой обработки формы и т. П., Но это позволяет использовать параметр для присоединения нескольких файлов через одну кнопку ввода. Надеюсь, что это поможет кому-то. Я уверен, что это нарушает все стандарты. Я знаю, что он работает в Chrome 31 и IE10.

Редактировать: Работая с этим маленьким сценарием, я добавил форматирование HTML для сообщения и благодарственную замену сообщения.

<?php 

if(isset($_POST['Submit'])) { 

    $email_to = ""; 
    $email_subject = ""; 
    $thankyou = "thanks.html"; 

    // boundary 
    $semi_rand = md5(time()); 
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

    function died($error) { 
     echo "Sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    $requester_name = $_POST['requester_name']; // required 
    $requester_email = $_POST['requester_email']; // required 




    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message = "<html><body> \r\n"; 
    $email_message .= "<table style=\"border: 1px #777 solid; font-family: Arial; font-size: 13px;\" cellpadding=\"7\"> \r\n"; 
    $email_message .= "<tr><td style=\"background: #444; color:#fff;\"><strong>New Hire Form</strong></td><td style=\"background: #444; color:#fff;\">Requirements</td></tr>" . "\n"; 

    $email_message .= "<tr><td style=\"background: #ccc;\"><strong>Requester Name: </strong></td><td style=\"background: #ddd;\">" .clean_string($requester_name). "</td></tr>" . "\n"; 
    $email_message .= "<tr><td style=\"background: #ccc;\"><strong>Requester Email: </strong></td><td style=\"background: #ddd;\">".clean_string($requester_email). "</td></tr>" . "\n"; 



    $email_message .= "</table> \r\n"; 
    $email_message .= "</body></html>"; 


    // multipart boundary 
$email_message .= "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $email_message . "\n\n"; 



for($i=0;$i<count($_FILES['attachfile']['name']);$i++) 
{ 

    if($_FILES['attachfile']['name'][$i] != "") 
    { 
    //here you will get all files selected by user. 




     $name = ($_FILES['attachfile']['name'][$i]); 
     $tmp_name = ($_FILES['attachfile']['tmp_name'][$i]); 
     $type = ($_FILES['attachfile']['type'][$i]); 
     $size = ($_FILES['attachfile']['size'][$i]); 

    echo count($_Files['attachfile']) ; 
    echo $_FILES['attachfile']['name'][$i] ; 
    echo $_FILES['attachfile']['tmp_name'][$i] ; 
    echo $_FILES['attachfile']['type'][$i] ; 


      // Read the file content into a variable 
      $file = fopen($tmp_name,'rb'); 
      $data = fread($file,filesize($tmp_name)); 
      // Close the file 
      fclose($file); 


      $data = chunk_split(base64_encode($data)); 


     $email_message .= "--{$mime_boundary}\n" . 
      "Content-Type: {$type};\n" . 
      " name=\"{$name}\"\n" . 
      "Content-Disposition: attachment;\n" . 
      " filename=\"{$name}\"\n" . 
      "Content-Transfer-Encoding: base64\n\n" . 
     $data . "\n\n"; 
    } 
} 

    $headers .= 'From: '.$email_sender."\r\n". // Mail will be sent from your Admin ID 
    'Reply-To: '.$Email."\r\n" .    // Reply to Sender Email 
    'X-Mailer: PHP/' . phpversion(); 
// headers for attachment 
    $headers .= "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; 
    @mail($email_to, $email_subject, $email_message, $headers); 


?> 

<script>location.replace('<?php echo $thankyou;?>')</script> 
<?php 
} 
die(); 
?> 
Смежные вопросы