Lorsque j'essaie d'envoyer un courrier via PHPMailer, je reçois ce message d'erreur. Mon code est ci-dessous:
<?
require("phpmailer/class.phpmailer.php"); // First we require the PHPMailer libary in our script
$mail = new PHPMailer(); // Next we create a new object of the PHPMailer called $mail
$mail->From = "[email protected]";
$mail->FromName = "Rajasekar";
$mail->AddAddress("[email protected]"); // This is the adress to witch the email has to be send.
$mail->Subject = "First PHP Email message"; // This is the subject of the email message.
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHP."; // This is the actual email message
if(!$mail->Send()) // Now we send the email and check if it was send or not.
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent.';
}
?>
Dans Ubuntu (au moins 12.04), il semble que sendmail n’est pas installé par défaut. Vous devrez l'installer en utilisant la commande Sudo apt-get install sendmail-bin
Vous devrez peut-être également configurer les autorisations appropriées, comme indiqué ci-dessus.
J'ai utilisé cette ligne de code
if($phpMailer->Send()){
echo 'Sent.<br/>';
}else{
echo 'Not sent: <pre>'.print_r(error_get_last(), true).'</pre>';
}
pour savoir quel était le problème. En fait, je courais en mode sans échec et, à la ligne 770 ou quelque chose du genre, un cinquième argument, $params
, a été attribué à mail()
, qui n'est pas pris en charge lors de l'exécution en mode sans échec. Je l'ai simplement commenté, et voilà, ça a fonctionné:
$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header/*, $params*/);
Cela relève de la fonction MailSend
- de PHPMailer.
Je viens d'avoir ce problème et j'ai trouvé dans mon journal des erreurs Apache que sendmail n'était pas installé, après l'installation, tout fonctionnait comme il se doit!
root@web1:~$ tail /var/log/Apache2/error.log
sh: 1: /usr/sbin/sendmail: not found
J'ai eu le même problème. Je viens de jeter un rapide coup d'œil au fichier Apache2 error.log
et il a dit exactement quel était le problème:
> sh: /usr/sbin/sendmail: Permission denied
Donc, la solution a été de donner les permissions appropriées pour le fichier /usr/sbin/sendmail
(il n'était pas accessible depuis php).
Commande pour faire cela serait:
> chmod 777 /usr/sbin/sendmail
assurez-vous qu'il existe même!
Essayez d'utiliserSMTPpour envoyer un email: -
$mail->IsSMTP();
$mail->Host = "smtp.example.com";
// optional
// used only when SMTP requires authentication
$mail->SMTPAuth = true;
$mail->Username = 'smtp_username';
$mail->Password = 'smtp_password';
Assurez-vous d'inclure également la classe smtp fournie avec phpmailer:
// for mailing
require("phpmailer/class.phpmailer.php");
require("phpmailer/class.smtp.php");
Pour revenir sur un ancien fil de discussion, mon problème était que l’une des adresses électroniques "AddressTo" n’était pas valide. La suppression de cette adresse électronique a supprimé l'erreur.
Comme noté ici , "Cela signifie que votre installation PHP n'est pas configurée pour appeler correctement la fonction mail () (par exemple, sendmail_path n'est pas défini correctement dans votre php.ini), ou vous n'avez pas de courrier local serveur installé et configuré. "
Dans mon cas, je devais autoriser la fonction mail () ("activer la file d'attente mail ()") dans les paramètres de mon hébergeur.
Essayez avec une adresse qui n'est pas Gmail. Pour autant que je sache, ils ne permettent pas un accès smpt pour envoyer des mails. Je faisais un programme de messagerie simple la semaine dernière et ils n'utilisent pas non plus les ports par défaut pour envoyer et nécessitent le transport via https
Vérifiez auprès de votre hôte pour voir s'il existe des limites horaires d'envoi d'e-mails.
C'est une erreur système.
Vérifier l'erreur du système avec:
tail /var/log/httpd/error_log
Cela peut être n'importe quelle raison.
En revoyant l’ancien thread, vous pouvez déboguer PHPMailer en profondeur en ajoutant:
print_r(error_get_last());
cela affichera l'erreur exacte pour vous qui cause la casse du mail php par défaut ().
J'espère que ça aide quelqu'un.
Un ancien fil de discussion, mais il pourrait aider quelqu'un comme moi ... J'ai résolu le problème en définissant la valeur du serveur SMTP sur une valeur légitime dans PHP.ini
J'ai eu la même erreur. Le Reply-to était à l'origine du problème. Je l'ai enlevé.
$email->AddReplyTo( $admin_email, $admin_name );
Dans CentOS, cela peut être dû à la stratégie SELinux . Exécutez le code suivant pour voir s'il est activé.
getsebool httpd_can_sendmail
Vous pouvez l'activer en appelant la commande ci-dessous. Le paramètre -P le rend permanent.
setsebool -P httpd_can_sendmail 1
"Impossible d'instancier la fonction mail" est le moyen utilisé par PHPMailer pour signaler l'échec de l'appel à mail () (dans l'extension Mail). (Vous utilisez donc le mailer 'mail'.)
Vous pouvez essayer de supprimer les @ avant les appels à mail () dans PHPMailer :: MailSend et de voir quelles erreurs, le cas échéant, sont supprimées en mode silencieux.
j'ai résolu mon problème (pour wamp)
$mail->IsSMTP();
$mail->Host='hote_smtp';
de corse changer hote_smtp par la bonne valeur