web-dev-qa-db-fra.com

essayer d'envoyer du courrier en utilisant Swift mailer, gmail smtp, php

Voici mon code:

<?php
require_once 'Swift/lib/Swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465)
  ->setUsername('[email protected]')
  ->setPassword('pass');

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('[email protected]' => 'MY NAME'))
  ->setTo(array('[email protected]' => 'YOU'))
  ->setBody('This is the text of the mail send by Swift using SMTP transport.');
//$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png');  
//$message->attach($attachment);
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>

APRÈS LA COURSE OBTENUE CETTE ERREUR ...

Erreur fatale: exception non interceptée 'Swift_TransportException' avec le message 'Code de réponse attendu 220 mais code obtenu "", avec le message ""' dans /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php:406

Stack trace: 
#0 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(299): Swift_Transport_AbstractSmtpTransport->_assertResponseCode('', Array) 
#1 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(107): Swift_Transport_AbstractSmtpTransport->_readGreeting() 
#2 /home/sitenyou/public_html/Swift/lib/classes/Swift/Mailer.php(74): Swift_Transport_AbstractSmtpTransport->start() 
#3 /home/sitenyou/public_html/sgmail.php(16): Swift_Mailer->send(Object(Swift_Message)) 
#4 {main} thrown in /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 406
32
champ

Le SMTP de GMail nécessite un chiffrement. Utilisation:

Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl");
52
Maerlyn

il manque le paramètre ssl, ce devrait être quelque chose comme ça

Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")

Testé et fonctionne bien

8
osos

Swift SmtpTransport - Code (envoyer un e-mail)

Le SMTP de GMAIL est: smtp.googlemail.com

Le code complet:

<?php
$pEmailGmail = '[email protected]';
$pPasswordGmail = '********';
$pFromName = 'MundialSYS.com'; //display name

$pTo = '[email protected]'; //destination email
$pSubjetc = "Hello MundialSYS"; //the subjetc 
$pBody = '<html><body><p>Hello MundialSYS</p></html></body>'; //body html

$transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl')
            ->setUsername($pEmailGmail)
            ->setPassword($pPasswordGmail);

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

$mEmail = Swift_Message::newInstance();
$mEmail->setSubject($pSubjetc);
$mEmail->setTo($pTo);
$mEmail->setFrom(array($pEmailGmail => $pFromName));
$mEmail->setBody($pBody, 'text/html'); //body html

if($mMailer->send($mEmail) == 1){
    echo 'send ok';
}
else {
    echo 'send error';
}
?>
3
Fernando

J'ai réussi à faire fonctionner cela sans SSL, voici comment:

$transport = Swift_SmtpTransport::newInstance('tls://smtp.gmail.com', 465)
            ->setUsername('[email protected]')
            ->setPassword('password');
$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance($subject)
            ->setFrom(array($emailTo=>$name))
            ->setTo(array($emailTo=>'Neo Nosrati'))
            ->addPart($body,'text/plain')
            ->setReturnPath('[email protected]');
3
Neo

Je ne peux pas être sûr, mais je pense que le port de Gmail est 587 en utilisant TLS, qui n'est pas SSL, mais une version plus récente de celui-ci. Vous devriez vérifier cela, car je pense que vous placez le mauvais code de construction.

Bonne chance!

2
David Conde

J'utilise le paquet "Messages Swift Mailer" dans Laravel 3 et j'ai le même problème. Après quelques tests, dans mon cas, la solution était de définissez la même adresse e-mail que j'ai utilisée dans l'authentification SMTP sur le paramètre "from".

J'essayais d'utiliser une adresse différente et cela déclenchait l'erreur "swiftmailer attendait le code de réponse 220 mais a obtenu le code avec le message".

J'espère que cela pourra aider.

1
darksoulsong

J'ai eu la même erreur avant et j'ai ajouté le paramètre "ssl" dans Swift_SmtpTransport :: newInstance ('smtp.gmail.com', 465, "ssl") comme l'a dit osos.

ÇA MARCHE!! merci: D

voici mon code:

<?php
require_once 'Swift/lib/Swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
  ->setUsername('[email protected]')
  ->setPassword('XXXXXXX');

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('THIS IS THE SUBJECT')
  ->setFrom(array('[email protected]' => 'YOUR NAME'))
  ->setTo(array('[email protected]' => 'YOU'))
  ->setBody('This is the text of the mail send by Swift using SMTP transport.');
//$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png');  
//$message->attach($attachment);
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>
1
matz

Pour les applications Google, en plus de définir le port 465 et SSL comme recommandé dans la réponse acceptée, vous devrez peut-être activer autoriser les applications moins sécurisées paramètre, selon https: // stackoverflow. com/a/25238515/94737

1
squarecandy