Problème avec PHP Mailer

Petit nouveau ! | 2 Messages

30 mai 2010, 09:11

Bonjour à tous et désolée que ce message apparaisse deux fois... un petit souci de connexion !!!

J'ai testé(1) à maintes reprises mon formulaire réalisé sous Flash... Mais voilà : il ne fonctionne pas ! Le message est bien envoyé mais il n'apparaît pas dans ma boîte de réception... J'utilise PHP Mailer. J'ai cherché... mais n'ai pas trouvé de solutions satisfaisantes... donc je me tourne vers vous...

(1) un test local via la page html. J'ai également utilisé MAMP (pour mac)... mais cela n'a rien donné... la page est blanche !

Voici le code php :
<?php
        require_once(dirname(__FILE__)."/phpMailer/class.phpmailer.php");
        
        class Mailer { 
        
                public $SMTPHostname = "smtp.free.fr";
                public $SMTPName = "*******";
                public $SMTPUsername = "[email protected]";
                public $SMTPPassword = "*******";
                public $sitename = "FIGUELINE";
                public $eol = "\r\n";
                
                //streamReader
                private function streamReader($url="") {
                        $txt = "";
                        if ($url=="") {
                                $url = "template.htm";
                        }
                        $url = realpath($url);
                        if ($fp = fopen($url, "r")) {              
                           while ($line = fread($fp, filesize($url))) {
                                  $txt .= "\n".$line;
                           }    
                           fclose($fp); 
                           $txt = $this->replaceText($txt);
                        } else {
                           echo "Error occured when reading file."; 
                        }
                        return $txt;
                }
                
                //replaceText
                private function replaceText($txt) {
                        $search = array(
                                "{sitename}"                                            
                        );
                        $replace = array(
                                $this->sitename                 
                        );
                        $txt = str_replace($search, $replace, $txt);
                        return $txt;
                }
                
                //replace crLf
                public function crLf($content) {
                        $content = stripslashes($content);
                        $content = str_replace(chr(13), "<br />", $content);
                        return $content;
                }
                
                //sendMail
                public function sendMail($fromname, $fromaddress, $toname, $toaddress, $subject, $body, $attachments=false) {           
                        $objmail = new PHPMailer();                     
                        $objmail->IsSMTP();             
                        $objmail->Host = $this->SMTPHostname;
                        $objmail->SMTPAuth = true;
                        $objmail->Username = $this->SMTPUsername;
                        $objmail->Password = $this->SMTPPassword;                       
                        $objmail->From = $fromaddress;
                        $objmail->FromName = $fromname;
                        $objmail->AddAddress($toaddress, $toname);      
                        $objmail->AddReplyTo($fromaddress, $fromname);
                        $objmail->Subject = $subject;
                        $objmail->MsgHTML($body);
                        if ($attachments != false) {
                                for($i=0; $i < count($attachments); $i++) {
                                        if (is_file($attachments[$i]["file"])) {   
                                                $objmail->AddAttachment($attachments[$i]["file"]);
                                        }
                                }
                        }
                        $err = "";
                        if(!$objmail->Send()) {
                                $err = "Message sending error: ".$objmail->ErrorInfo;
                        }
                        $objmail->ClearAddresses();
                        $objmail->ClearAttachments();
                        return $err;
                }       
                
                //sendMessage
                public function sendMessage($fromname, $fromaddress, $subject, $message) {
                        $toname = $this->SMTPName;
                        $toaddress = $this->SMTPUsername;
                        $message = $this->crLf($message);
                        //Template
                        $templatepath = dirname(__FILE__)."/email/";
                        $template = realpath($templatepath."template.htm");             
                        $template = str_replace("\\template", "\\\\template", $template);
                        //Body
                        $body = $this->streamreader($template);
                        $body = $this->replaceText($body);                      
                        $search         = array("{name}",       "{email}",              "{subject}",    "{message}");
                        $replace        = array($fromname,      $fromaddress,   $subject,               $message);
                        $body = str_replace($search, $replace, $body);
                        try {   
                                $this->sendMail($fromname, $fromaddress, $toname, $toaddress, $subject, $body);
                        }
                        catch(Exception $e) {echo $e->getMessage();}
                }
                
        }
        
        $objMailer = new Mailer();
        
        $name = $_POST["namex"];
        $email = $_POST["emailx"];
        $subject = $_POST["subjectx"];
        $message = $_POST["messagex"];  
        $objMailer->sendMessage($name, $email, $subject, $message);     
        echo "submitted=ok";
?>
Ligne 7, on me demande un mot de passe... J'ai visionné pas mal de formulaires de contact en php et c'est bien la première fois que cela !!

Merci de votre aide.
Problème avec PHP Mailer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 mai 2010, 10:32

Bonjour,

Il n'y a pas besoin d'identification sur le SMTP de Free, donc n'indique pas de Username ni de Password et ça devrait fonctionner
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

30 mai 2010, 11:38

Merci de ta réponse...

J'ai donc supprimé le mot de passe... par contre pour le username... c'est mon adresse mail... (comme indiqué dans le template). Enfin, j'ai testé en ligne... rien ne fonctionne quoi que je fasse. J'ai changé la ligne 54 : $objmail->IsSMTP(); par IsMail(). J'ai supprimé aussi plus loin... $objmail->Password = $this->SMTPPassword;