8721 sujets

Développement web côté serveur, CMS

Bonjour à tous Smiley jap ,
Je voudrais joindre un PDF crée suite à un formulaire avec HTML2PDF puis l'envoyer avec PHMailer.
Tout fonctionne, le mail part bien, j'ai réussi à créer le PDF en l'enregistrant sur mon disque dur.
Mais lorsque j'essaye de le joindre à mon mail, le pdf est bien en pj mais je ne peut pas l'ouvrir Smiley hmm .
upload/1603373669-81287-2020-10-22153029-adobeacrobat.jpg
Il fait bien la même taille de mes pdf crées localement..
J'ai bien suivi les tuto et wiki des deux librairies, enfin je pense ^^
Voici mon code PHPMailer :

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require './vendor/phpmailer/phpmailer/src/Exception.php';
require './vendor/phpmailer/phpmailer/src/PHPMailer.php';
require './vendor/phpmailer/phpmailer/src/SMTP.php';
require './vendor/autoload.php';

// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';

try {
    //Server settings
    $mail->SMTPDebug = 0;                                       // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = '******';             // Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    $mail->Username   = '*****';                         // SMTP username
    $mail->Password   = '*****';                    // SMTP password
    //$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
    $mail->Port       = ****;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Recipients
    $mail->setFrom('****@****.com', '****');
    $mail->addAddress($to);     // Add a recipient
    //$mail->addAddress('ellen@example.com');               // Name is optional
    $mail->addReplyTo($shop_email, 'Votre magasin');
    //$mail->addCC('cc@example.com');

    $mail->addBCC($shop_email);

    // Attachments
    $mail->addStringAttachment($pdf_done, 'myPdf.pdf');         // Add attachments
    //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

    // Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = $subject;
    $mail->Body    = $message;
    $mail->AltBody = strip_tags($message);

    $mail->send();
    echo '';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

?>


et voici le code de HTML2PDF :

ob_start();
// --> mon code HTML de creeation du PDF
$content = ob_get_clean();

require_once dirname(__FILE__).'/../vendor/autoload.php';
use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Exception\ExceptionFormatter;

try{
    $pdf = new \Spipu\Html2Pdf\Html2Pdf('P', 'A4', 'fr');
    $pdf->writeHTML($content);

    $pdf_done = $pdf->output('myPdf.pdf', 'S');

}catch(\Spipu\Html2Pdf\Exception\Html2PdfException $e){
    die($e);
}

?>


J'ai essayé de rajouter ", 'base64', 'application/pdf'" dans le addStringAttachment mais ca ne change rien.
Avez vous une idée de mon erreur?

Merci à tous

Merci à tous Smiley sweatdrop
Salut,

essaye un petit base64_decode sur pdf_done quand tu l'ajoute a addStringAttachment


    $mail->addStringAttachment(base64_decode($pdf_done), 'myPdf.pdf'); 
Hello, merci pour ta réponse.
Ça me fait même erreur qd j’essaye d'ouvrir mon pdf joint au mail :x
Modifié par louyi (23 Oct 2020 - 12:01)
AH mince, et addAttachment ne fonctionne pas ?
edit: ah oui mais non vu que tu utilise HTML2PDF c'est du blob je crois
Modifié par JENCAL (23 Oct 2020 - 12:11)
Non plus, addAttachment me fait une erreur et n'envoi plus le mail :x
En passant par FPDF ca pourrait resoudre mon pb? Ca me rend fou Smiley bawling
Hello!
Perso je fais la même chose avec FPDF et PHPMailer et ça fonctionne très bien...
J'utilise addAttachment par contre. Pas de soucis sur le chemin du fichier? Est-ce que tu es en local ou distant? Je sais qu'il y a pas mal de soucis avec l'envoi de mails quand on est en local...
Bon courage
Bonjour,

- Est il possible de rajouter les chemins absolus devant le nom du pdf dans les 2 scripts php ou de faire un 'if fichier exist' du pdf avant de faire le add ?

- pourrais-tu ouvrir le mail reçu et afficher ce dernier ( en-tête, séparateur, etc) afin de voir ce qu il y a ds le mail reçu.

Bcdt