2017-09-01 3 views
2

J'essaie le moyen le plus simple d'envoyer un courrier électronique avec un fichier joint.Attachement de fichier PDF simple dans PHP Mailer

J'ai essayé d'utiliser cette

$mail ->addAttachment("path_to_pdf", "pdf_name); 

mais il does't travail, depuis le « Mail est envoyé », mais le « fichier joint PDF » n'est pas envoyé.

S'il vous plaît aidez-moi à résoudre mon problème, je veux joindre un fichier pdf dans l'e-mail que je veux envoyer au destinataire. Merci!

Voici les fichiers que j'ai utilisés pour envoyer un e-mail avec une pièce jointe.

index.html

 <html> 
     <head> 
     </head> 
     <body> 
      <form method="post" action="send_mail.php" enctype="multipart/form-data"> 
      To : <input type="text" name="mail_to"> <br/> 
      Subject : <input type="text" name="mail_sub"> 
      <br/> 
      Message <input type="text" name="mail_msg"> 
      <br/> 
      File: <input type="file" name="file" > 
      <br/> 
       <input type="submit" value="Send Email"> 

      </form> 
     </body> 
    </html> 

et

send_mail.php

 <?php 

     $mailto = $_POST['mail_to']; 
     $mailSub = $_POST['mail_sub']; 
     $mailMsg = $_POST['mail_msg']; 
     require 'PHPMailer-master/PHPMailerAutoload.php'; 
     $mail = new PHPMailer(); 
     $mail ->IsSmtp(); 
     $mail ->SMTPDebug = 0; 
     $mail ->SMTPAuth = true; 
     $mail ->SMTPSecure = 'ssl'; 
     $mail ->Host = "smtp.gmail.com"; 
     $mail ->Port = 465; // or 587 
     $mail ->IsHTML(true); 
     $mail ->Username = "[email protected]"; 
     $mail ->Password = "accountsamplepassword"; 
     $mail ->SetFrom("[email protected]"); 
     $mail ->Subject = $mailSub; 
     $mail ->Body = $mailMsg; 
     $mail ->AddAddress($mailto); 
     $mail->AddAttachment('pdf_files/', 'reservation.pdf'); 


     if(!$mail->Send()) 
     { 
      echo "Mail Not Sent"; 
     } 
     else 
     { 
      echo "Mail Sent"; 
     } 

    ?> 

S'il vous plaît me aider avec mon problème, Merci!

+1

Si tel est le vrai mot de passe que vous utilisez, puis changer de bien vouloir le plus tôt possible. De plus, clarifiez le problème et l'endroit où vous vous trouvez –

+0

La modification du mot de passe en question n'aidera pas à modifier l'historique des modifications. Donc, vous devrez changer le mot de passe de votre compte! Bummer: | –

+0

Hahahaha bonjour, ça va. Le compte n'était pas un compte légitime, je l'ai utilisé pour des tests factices :) –

Répondre

1

cette ligne ne fait pas ce que vous attendez

$mail->AddAttachment('pdf_files/', 'reservation.pdf'); 

il essaie de trouver un fichier nommé « pdf_files/» et veut ajouter. Cependant, comme vous pouvez l'imaginer maintenant, ce n'est pas un nom de fichier correct. Le premier argument de AddAttachment est le chemin du fichier (c'est-à-dire y compris le nom de fichier du fichier), le deuxième paramètre est le nom de fichier, montré dans l'email, comment le fichier est appelé/nommé, vous pouvez donc l'appeler différemment, sans renommer le fichier d'origine.

si la ligne ci-dessus devrait probablement lire:

$mail->AddAttachment('pdf_files/reservation.pdf', 'reservation.pdf'); 
+0

qu'en pensez-vous? –

+0

$ mail -> AddAttachment ('pdf_files /'. $ _POST ['pdf_name'], 'reservation.pdf'); –

+1

@LapizStone qui ressemble à une mauvaise idée. vous voudriez vraiment désinfecter votre entrée, parce que quelqu'un pourrait poster '" "../../ config.php" 'ou quelque chose et trouver tous les mots de passe de votre serveur (ou au moins un mot de passe de base de données), dès qu'il trouve le fichier de configuration de cette façon. – Jakumi