2010-01-20 12 views
1

J'essaie d'envoyer des e-mails via gmail à l'aide de PHPMailer_V5.1.Impossible d'envoyer des e-mails via gmail à l'aide de PHPMailer_v5.1

Obtenir l'erreur suivante,

SMTP -> ERREUR: Impossible de se connecter au serveur: Impossible de trouver le transport socket « ssl » - avez-vous oublié de l'activer lors de la configuration PHP? (41961176) Erreur SMTP: impossible de se connecter à l'hôte SMTP.

Ce qui suit est le code qui est venu avec le téléchargement PHPMailer, je viens modifié les champs obligatoires,

<?php 
    require_once('../class.phpmailer.php'); 
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch 

    $mail->IsSMTP(); // telling the class to use SMTP 

    try { 
     $mail->Host  = "mail.yourdomain.com"; // SMTP server 
     $mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 
     $mail->SMTPAuth = true;     // enable SMTP authentication 
     $mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
     $mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
     $mail->Port  = 465;     // set the SMTP port for the GMAIL server 
     $mail->Username = "[email protected]"; // GMAIL username 
     $mail->Password = "********";   // GMAIL password 
     $mail->AddReplyTo('[email protected]', 'First Last'); 
     $mail->AddAddress('[email protected]', 'John Doe'); 
     $mail->SetFrom('[email protected]', 'First Last'); 
     $mail->AddReplyTo('[email protected]', 'First Last'); 
     $mail->Subject = 'PHPMailer Test Subject via mail(), advanced'; 
     $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically 
     $mail->MsgHTML(file_get_contents('contents.html')); 
     $mail->AddAttachment('images/phpmailer.gif');  // attachment 
     $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment 
     $mail->Send(); 
     echo "Message Sent OK</p>\n"; 
    } catch (phpmailerException $e) { 
     echo $e->errorMessage(); //Pretty error messages from PHPMailer 
    } catch (Exception $e) { 
     echo $e->getMessage(); //Boring error messages from anything else! 
    } 
    ?> 
+0

Vous semblez être l'hôte à mettre mail.yourdomain.com en haut. Essayez de supprimer cela et voir si cela aide. –

+0

pas de le supprimer ne fait aucune différence – San

Répondre

8

Sur la base de l'erreur, il semble que SSL n'est pas activé en PHP. Du haut de ma tête, je crois que vous devez supprimer

extension = php_openssl.dll

dans votre fichier php.ini

ci-dessus vous aider à installer SSL s'il est déjà configuré sur votre système :

http://us2.php.net/manual/en/openssl.installation.php

+0

wow..uncommenting extension = PHP_openssl.dll travaillé. Je ne comprends pas pourquoi a-t-il été commenté. Ceci est mon premier jour de codage php, j'ai beaucoup à apprendre – San

+2

Certaines fonctionnalités sont commentées par défaut. Si vous regardez à travers le php.ini, vous trouverez plusieurs d'entre eux. La raison de ceci je ne suis pas sûr de. Je suis content que tu l'aies fonctionné. –

+0

+1 Bon appel Waleed. –

0

Eh bien, le message d'erreur dit tout:

Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?

Cela signifie que la version PHP n'est pas équipée des bibliothèques nécessaires pour communiquer avec le serveur de messagerie (ou tout autre serveur d'ailleurs) via SSL.

Si vous ne disposez pas d'un accès root à votre serveur, il s'agit probablement d'un problème pour votre administrateur/fournisseur de serveur.

D'un similar discussion in a forum, une solution possible qui semble tout à fait réaliste:

My guess is that either mod_ssl is not installed for apache or it is installed but the configuration lines for mod_ssl are commented out in httpd.conf (like it was on suse9 for me). apxs will only enable ssl functions in php if mod_ssl is up and running

So check mod_ssl is available + enabled in apache then try recompiling php with

./configure --with-apxs2=/usr/sbin/apxs --with-mysql --enable-ssl

+0

Je décommente le "LoadModule ssl_module modules/mod_ssl.so", et redémarré mais pas de changement, je reçois toujours une erreur. comment puis-je vérifier si mod_ssl est disponible ?? – San

+0

Je pense que vous devrez également recompiler PHP avec '--enable-ssl'. Consultez 'phoinfo();' d'abord pour voir comment PHP est compilé. –

+0

@San: Vous devez également avoir le support activé en php je pense que cela a été mentionné en amont par Waleed. Note il a donné des instructions spécifiques à Windows en référence à l'extension, il devrait être un '.so 'sur une boîte * nix. – prodigitalson