utilisation phpMailer

danielsandanielsan Member
octobre 2011 modifié dans Entraide
Bonjour à vous,

tout débute comme mon message sur FPDF,
j'utilise sur un site développé peso la class phpMailer
pour envoyer un email avec une pièce jointe ( le PDF généré à la volé ).

PluXml possède bien une fonction d'envoi d'email, mais sans pièce jointe.
Est-il possible d'utiliser cette class avec notre bête à plume ?
Si oui, comment ?

le code d'appel, présent normalement à la racine du site, se présente de la sorte:
<?php
	require "class.phpmailer.php";
	$mail = new PHPmailer();
	$mail->IsHTML(true);
	$mail->From='mon@email.com';
	$mail->FromName='Mon nom';
	$mail->AddAddress($to_email, $to_name);
	$mail->AddReplyTo('reply@email.com', 'Nom');
	$mail->Subject='Sujet de l'email';
	$mail->Body='<html><body><head></head>';
	$mail->Body.=$corps_mail;
	$mail->Body.='</body></html>';
	$doc = $pdf->Output('', 'S');
	$mail->AddStringAttachment($doc, 'piece-jointe.'.pdf', 'base64', 'application/pdf');

	if(!$mail->Send()){ //Teste si le return code est ok.
		echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
	} else {
		echo 'Email envoyé avec succès';
	}
	unset($mail);?>
il y a de grande similitude avec la fonction de PluXml ...
Quelqu'un a déjà testé ? Comment l'utiliser ?

Cordialement,
_____
D.San

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Le mieux serait peut être de modifier la fonction mail de pluxml pour qu'elle gère l'envoi de pj

    un exemple ici à tester

    http://www.php.net/manual/fr/function.mail.php#105661

    Si quelqu'un à le temps de se pencher sur le problème...

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • danielsandanielsan Member
    octobre 2011 modifié
    je mettais déjà penché sur ce pb ...

    j'ai eu trop mal à la tête à cause des MIMEs, charset, bits et tout le bazar.
    C'est pourquoi j'avais utilisé phpMailer qui m'a grandement simplifié la vie puisqu'il fait déjà tout ça.
    En plus, un seul fichier à utiliser ... j'le verrai bien dans la lib de PluXml ! ;) avec la même fonction
    <?php
    
    $array_doc($doc,"nom","extension","base","type");
    
    public static function sendMail($name, $from, $to, $subject, $body, $contentType="text", $cc=false, $bcc=false, $array_doc) {
    
        require "class.phpmailer.php";
        $mail = new PHPmailer();
        $mail->IsHTML(true);
        $mail->From=$from;
        $mail->FromName=$name;
        $mail->AddAddress($to_email, $to_name);
        $mail->AddReplyTo('reply@email.com', 'Nom');
        $mail->Subject=$subject;
        $mail->Body='<html><body><head></head>';
        $mail->Body.=$body;
        $mail->Body.='</body></html>';
        $doc = $pdf->Output('', 'S');
        $mail->AddStringAttachment($array_doc['doc'], $array_doc[nom].$array_doc['extension'], $array_doc['base'], $array_doc['type']);
    
        if(!$mail->Send()){ //Teste si le return code est ok.
            echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
        } else {
            echo 'Email envoyé avec succès';
        }
        unset($mail);
    }
    ?>
    
    dans le genre quoi :D
  • bien,
    juste pour dire qu'on peut aussi utiliser phpMailer avec PluXml ( en parallèle de la fonction native ).
    Je ne sais pas pourquoi mais j'ai l'impression que les emails arrivent plus vite ... en étant chez OVH.

    Le PDF en pièce jointe passe aussi, j'arrive au bout !
    J'ai enfin noté sur ma to-do-list: épurer/optimiser le nombre de champs et le nom des variables, étape la moins rigolote, mais ça sent la fin. :D

    Dès que je reviens à la normal,
    j'trouve une application "tout public" pour vous faire profiter de ces ptits trucs sympatoches.
  • Bonjour,


    je suis maintenant en train de faire un plugin phpMailer.
    Et je ne comprend pourquoi ça ne marche pas alors qu'en l'incluant dans un autre plugin, ça marche nickel.


    J'ai le message
    Fatal error: Cannot redeclare class PHPMailer in C:\xampp\htdocs\pluxml\plugins\phpMailer\class.phpmailer.php on line 21

    Voici la fonction dans le plugin:
    public function phpMailer($params) {
    
    	if(!plxUtils::checkMail($params["to_email"])) {
    		echo $this->getLang("L_error_email");
    	} else{
    		$to_email = $params["to_email"];
    	}
    		
    	if($params["subject"]=="") {
    		$subject = $this->getLang("L_default_subject");
    	} else {
    		$subject = $params["subject"];
    	}
    
    	if($params["content"]==""){
    		$content = $this->getLang("L_default_content");
    	} else{
    		$content = $params["content"];
    	}
    
    	include_once(PLX_PLUGINS."phpMailer/class.phpmailer.php");
    	$mail = new PHPmailer();
    	$mail->IsHTML(true);
    	$mail->From = $this->getParam('myEmail');
    	$mail->FromName = $this->getParam('myName');
    	$mail->AddAddress($to_email, $to_name);
    	$mail->AddReplyTo($this->getParam('myEmail'), $this->getParam('myName'));
    
    	$mail->AddBCC($this->getParam('myEmail'), $this->getParam('myName'));
    	$mail->Subject = $subject;
    
    	$mail->Body='<html><body><head></head>';
    	$mail->Body.= $content;
    	$mail->Body.='</body></html>';
    
    
    	if(!$mail->Send()){ //Teste si le return code est ok.
    		echo $mail->ErrorInfo;
    	} else {
    		echo "good";
    	}
    	unset($mail);
    
    }
    


    Et le fichier template static-mailer.php
    <?php include(dirname(__FILE__).'/header.php'); ?>
    <div class="artList">
    <h2><?php $plxShow->staticTitle(); ?></h2>
    
    <div class="static-content">
    	<?php $plxShow->staticContent(); ?>
    </div>
    
    <?php
    $params = array(
    "to_email" 	=>"email@domaine.fr",
    "to_name"	=>"monNom",
    "subject"	=>"test de sujet",
    "content"	=>"test de contenu"
    );
    
    eval($plxShow->callHook('phpMailer', $params));
    
    ?>
    
    </div>
    <?php include(dirname(__FILE__).'/footer.php'); ?>
    


    Quelqu'un a une idée ?


    Cordialement,

    _____
    D.San
  • bon, c'était une erreur de nommage de plugin qui allait à l'encontre du nom de la class :D
    Je continue donc le développement ...
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut

    Est-ce que par hasard tu aurais appelé la classe de ton plugin phpMailer alors que ce nom est déjà utilisé dans class.phpmailer.php ?

    Pour résumé tu as 2 classes qui portent le meme nom: PHPMailer

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • lol, on s'est croisé ! ^^^
    tu as vu juste, j'avais phpMailer VS PHPMailer ...


    Il y a un autre truc que je ne comprends pas:
    en utilisant le script sous forme de plugin, ça envoie 2 mails.
    Si par contre j'insère direct le code dans le template, ça n'en envoie qu'un ( ce que je souhaite ).

    Tu vois quelque chose quelque part ..?


    Merci.
Connectez-vous ou Inscrivez-vous pour répondre.