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