L'envoi d'e-mails via SMTP avec PHPMailer
Je suis en train d'envoyer SMTP e-mails à l'aide de PHPMailer, mais je reçois ce message d'erreur, toutes les idées sur la façon de se débarrasser d'elle?
Je suis en train d'essayer de se connecter via SSL sur le port 465.
SMTP -> FROM SERVER:
SMTP -> FROM SERVER:
SMTP -> ERROR: EHLO not accepted from server:
Notice: fputs() [function.fputs]: send of 18 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/amazonek.cz/subdomains/library/PHPMailer_v5.1/class.smtp.php on line 494
SMTP -> FROM SERVER:
SMTP -> ERROR: HELO not accepted from server:
Notice: fputs() [function.fputs]: send of 12 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/amazonek.cz/subdomains/library/PHPMailer_v5.1/class.smtp.php on line 212
SMTP -> ERROR: AUTH not accepted from server:
SMTP Error: Could not authenticate.
Mon code:
require_once('../library/PHPMailer_v5.1/class.phpmailer.php');
try{
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = SMTP_SERVER;
$mail->Port = SMTP_PORT;
$mail->Username = SMTP_USERNAME;
$mail->Password = SMTP_PASSWORD;
$mail->SMTPDebug = 2;
$mail->SetFrom(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);
$mail->Subject = 'AMAZONEK.cz - objednávka číslo '.$_SESSION['orderId'];
$mail->MsgHTML('<b>Ahoj</b>');
$mail->AddAddress($_SESSION['user']['email'], $_SESSION['user']['name'].' '.$_SESSION['user']['surname']);
$mail->AddBCC(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);
if(!$mail->Send()) throw new Exception($mail->ErrorInfo);
}
catch(Exception $e){
echo $e->getMessage();
}
Définition des constantes:
define('SMTP_SERVER', 'smtp.ebola.cz');
define('SMTP_PORT', 465);
define('SMTP_USERNAME', '[email protected]');
define('SMTP_PASSWORD', '***CENSORED***');
define('MAIL_ORDERS_ADDRESS', '[email protected]');
define('MAIL_ORDERS_NAME', 'My Name');
Des idées?
OriginalL'auteur cypher | 2010-09-01
Vous devez vous connecter pour publier un commentaire.
Aussi loin que je peux voir tout ce qui est droit avec votre code. Votre erreur est:
Ce qui signifie que les informations d'identification que vous avez d'envoi sont rejetés par le serveur SMTP. Assurez-vous que l'hôte, port, nom d'utilisateur et mot de passe sont bons.
Si vous voulez utiliser le protocole TLS, essayez d'ajouter:
Si vous voulez utiliser le protocole SSL, essayez d'ajouter:
Gardez à l'esprit que:
Peut-être cet exemple peut aider (GMail SMTP sécurisé).
vous pouvez également préfixe de votre nom d'hôte du protocole (c'est à dire
$mail->Host = "tls://".SMTP_SERVER;
) ET l'utilisationport 465
OriginalL'auteur AlexV
Essayez d'envoyer un e-mail via SMTP server manuellement ou à partir d'une interactive mailer (par exemple Mozilla Thunderbird). Les erreurs, il semble que le serveur n'accepte pas vos informations d'identification. C'est que l'exécution de SMTP sur le port, ou est-il SSL+SMTP? Vous ne semblez pas être en utilisant la connexion sécurisée dans le code que vous avez posté, et je ne suis pas sûr si PHPMailer prend en charge SSL+SMTP.
(Premier résultat de recherche sur google de votre serveur SMTP nom d'hôte: http://podpora.ebola.cz/idx.php/0/006/article/Strucny-technicky-popis-nastaveni-sluzeb.html semble dire "SMTPs envoi du courrier: connexion sécurisée SSL,port: 465" . )
Il ressemble PHPMailer prend en charge SSL; au moins de cette. Ainsi, vous aurez besoin de changer cela:
dans cette:
OriginalL'auteur Piskvor
Cela peut sembler une shot in the dark mais assurez-vous que PHP a été respectée avec OpenSSL si SMTP requiert SSL.
Pour vérifier l'utilisation de
phpinfo()
Espère que cela aide!
OriginalL'auteur Mikey1980
essayez le port 25 au lieu de 456.
J'ai eu la même erreur, en utilisant le port 456, et de la modifier à 25 travaillé pour moi.
OriginalL'auteur Ludo - Off the record
Oui, vous avez besoin d'OpenSSL pour fonctionner correctement. Ma sauvegarde de site de test a fonctionné, mon serveur n'a pas. La différence? Vivre serveurs ne pas avoir d'OpenSSL dans la configuration de PHP.
OriginalL'auteur Todd
J'avais le même problème pour quelque chose comme une heure, jusqu'à ce que j'ai compris ce qui n'allait pas. Mon problème, c'est que j'ai utilisé SSL, au lieu de ssl. Case est sensible à la casse dans le code. AlexV m'a guidé vers la source du problème. Que helo/ehlo -stuff ne semble pas pertinent.
OriginalL'auteur F-3000
ce qui est typique d'essayer de se connecter à un service SSL avec un client qui n'est pas à l'aide de SSL
pas surprenant qu'il y ait pas réussi à démarrer une conversation SMTP
authentigation n'est pas une option,.
phpmailer ne pas faire du SSL (aka TLS sur connecter, SMTPS)
Court de réécriture smtp.class.php pour inclure le support pour il y il aucun moyen de faire ce que vous demandez.
Utiliser le port 587 avec SSL explicite (aka TLS, STARTTLS) à la place.
OriginalL'auteur user340140
Simple client smtp avec php socket de flux avec tls/ssl, smtp commande STARTTLS:
https://github.com/breakermind/PhpMimeParser/blob/master/PhpSmtpSslSocketClient.php
fonctionne avec gmail.com avec authentifier:
OriginalL'auteur Max