2010-03-22 5 views
4

j'ai téléchargé Swift Mailer à partir de leur site web et d'essayer d'envoyer simple e-mail avec le code suivantemail Swift Mailer question envoyer

 <?php 
    require_once 'lib/swift_required.php'; 

    $transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25) 
    ->setUsername('your username') 
    ->setPassword('your password') 
     ; 


    $mailer = Swift_Mailer::newInstance($transport); 

    //Create a message 
    $message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
->setTo(array('[email protected]', '[email protected]' => 'A name')) 
->setBody('Here is the message itself') 
; 

//Send the message 
$result = $mailer->send($message); 

?>

une fois que je lance la page, il donne l'erreur

 Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php on line 233 

    Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.anyhost.com:25 (php_network_getaddresses: getaddrinfo failed: No such host is known.) in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php on line 233 

    Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.domain.com [php_network_getaddresses: getaddrinfo failed: No such host is known. #0]' in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php:235 Stack trace: #0 E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php(70): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 E:\web_sites\swift_mail\lib\classes\Swift\Transport\AbstractSmtpTransport.php(101): Swift_Transport_StreamBuffer->initialize(Array) #2 E:\web_sites\swift_mail\lib\classes\Swift\Mailer.php(74): Swift_Transport_AbstractSmtpTransport->start() #3 E:\web_sites\swift_mail\test.php(33): Swift_Mailer->send(Object(Swift_Message)) #4 {main} thrown in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php on line 235 

si je supprimer la ligne

$result = $mailer->send($message); 

puis exécutez la page et aucun message d'erreur, dès que j'ajoute la ligne ci-dessus pour envoyer un e-mail, j'ai eu une erreur.

mon serveur sortant, port et ID utilisateur & les mots de passe sont corrects dans mon fichier.

Merci

+1

Nous avons besoin de plus d'informations. Jetez un oeil à votre php.ini et voyez si "error_reporting" permet de signaler des erreurs E_ALL et de définir "display_errors" sur On (ou utilisez les fichiers journaux), puis nous envoyer des erreurs plus détaillées ... –

+0

Pouvez-vous saisir un plus spécifique Message d'erreur? Activez error_reporting et display_errors, ou vérifiez le journal des erreurs de PHP (si configuré) – timdev

Répondre

4

Il cherche le serveur smtp.domain.org mais ne parvient pas à le résoudre.

Si vous regardez la ligne la dernière étape dans le commerce de la pile appelle, vous pouvez le voir lancer une exception:

if (!$this->_stream = fsockopen($host, $this->_params['port'], $errno, $errstr, $timeout)) 
{ 
    throw new Swift_TransportException(
    'Connection could not be established with host ' . $this->_params['host'] . 
    ' [' . $errstr . ' #' . $errno . ']' 
    ); 
} 

Vous avez besoin soit d'entrer un serveur smtp valide ou envelopper l'envoi () la ligne dans un try/catch pour intercepter l'exception et soit LOGGUE quelque part ou de l'ignorer

+0

si je change le serveur de messagerie j'ai obtenu le waring suivant Attention: date() [function.date]: Il n'est pas sûr de se fier au fuseau horaire du système paramètres. Vous devez * requis * utiliser le paramètre date.timezone ou la fonction date_default_timezone_set(). Si vous utilisez l'une de ces méthodes et que vous recevez toujours cet avertissement, vous avez probablement mal orthographié l'identifiant du fuseau horaire. Nous avons choisi 'Asia/Dubai' pour '4.0/no DST' à la place dans E: \ web_sites \ swift_mail \ lib \ classes \ Swift \ Mime \ Headers \ DateHeader.php à la ligne 112 – air

+1

vous devez définir le fuseau horaire dans votre script en utilisant la méthode date_default_timezone_set ('Asia/Dubai') ou dans php.ini en définissant date.timezone = 'Asie/Dubai'. Cela va supprimer l'erreur – Mark

+0

J'ai commenté la ligne qui jette l'exception: lancer une nouvelle Swift_TransportException (et le courrier envoie maintenant bien sous Windows Server 2003 –

3

les erreurs que vous disent tout ce que vous devez savoir:

getaddrinfo failed: No such host is known. 

le SM spécifié Le serveur TP (smtp.domain.org) n'existe pas, donc le script mailer ne peut pas s'y connecter pour envoyer l'email. le domaine domain.org Au moins l'existence, alors peut-être qu'ils ont le serveur SMTP nommé autre chose:

[email protected]:~$ host -t soa domain.org 
domain.org has SOA record ns.domain.org. sales.domain.org. 1267596439 10800 3600 604800 3600 
[email protected]:~$ host -t mx domain.org 
domain.org mail is handled by 10 mail.domain.org. 
[email protected]:~$ host domain.org 
domain.org has address 208.109.97.130 
domain.org mail is handled by 10 mail.domain.org. 

Indiquez un autre hôte SMTP qui existe et essayer à nouveau.

+0

Bon à savoir. –

0

Veuillez contrôler si le port que vous utilisez est vraiment le port utilisé par votre serveur de messagerie. J'ai eu affaire à un problème similaire et j'ai finalement vu que j'utilisais le port 25 avec yahoo au lieu de 465.