Swiftmailer config : send mail using gmail
Solution 1
Looks like your live server is missing OpenSSL
, so you need to enable it in order to get secure connections working (i.e. enable the php_openssl
module). Also check this question.
Solution 2
After some search in google.
To send mail using gmail auth you need to use this code,
$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465);
This is the correct way to send mail. This mail will be send by gmail.
PHP use mail() to send just a mail,
mail($to,$subject,$message,$headers);
This code sends a mail using php code.
Swiftmailer can also send a mail using this php mail() function,
Here is swift code.
$transport = Swift_MailTransport::newInstance();
// nothing inside ()
The problem in this mail is, gmail displays following message,
This message may not have been sent by: [email protected]
Sometimes this mail will go to spam.
Comments
-
Sudhakar Krishnan almost 2 years
I can send email from my pc using swiftmailer, but mail not sending in server.
I'm using swiftmailer 5.0.1. Project details are,
- A simple php project in netbeans
- swiftmailer 5.0.1
- twig 1.13.1
My code is
public function init() { $this->username = '[email protected]'; $this->password = 'password'; $this->host = 'ssl://smtp.gmail.com'; $this->port = 465; $this->from = '[email protected]'; $this->subject = 'Company - contact'; $this->body_part_type = 'text/html'; } public function send_email($from_name_add, $to_add, $fullname, $email, $mobile, $content) { $this->init(); $transport = Swift_SmtpTransport::newInstance($this->host, $this->port) ->setUsername($this->username) ->setPassword($this->password); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance(); $cid = $message->embed(Swift_Image::fromPath('../public_html/pic/logo.png')); $this->body = $this->renderEmailTemplate('email', $fullname, $email, $mobile, $content, $cid); $message->setSubject($this->subject) ->setFrom(array('[email protected]' => '' . $from_name_add)) ->setTo($to_add) ->setContentType($this->body_part_type) ->setBody($this->body); $result = $mailer->send($message); return $result; }
This code works FINE in my pc. But after upload this code/project to server, mail not sending. Error is,
<br /> <b>Fatal error</b>: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host ssl://smtp.gmail.com [Connection timed out #110]' in /home/am***/lib/Swift/classes/Swift/Transport/StreamBuffer.php:259 Stack trace: #0 /home/am***/lib/Swift/classes/Swift/Transport/StreamBuffer.php(64): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/am***/lib/Swift/classes/Swift/Transport/AbstractSmtpTransport.php(115): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/am***/lib/Swift/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() #3 /home/am***/controller/send_mail.php(54): Swift_Mailer->send(Object(Swift_Message)) #4 /home/am***/public_html/contact.php(43): send_mail->send_email('Am*** Inc', 'fe****@gma...', 'asdf', '[email protected]', '111111111111', 'Testing mail') #5 {main} thrown in <b>/home/am***/lib/Swift/classes/Swift/Transport/StreamBuffer.php</b> on line <b>259</b><br />
HINT: There is an allready running php symfony2 project in that server, this project can send mail successfully.
Here is the symfony2 code,
$message = \Swift_Message::newInstance() ->setSubject($sub)->setFrom($from)->setTo($to)->setContentType("text/html") ->setBody($this->renderView('FZAm***Bundle:Layout:mail.html.twig', array ('name' => $this->fullname, 'mobile' => $this->mobile, 'email' => $this->email, 'content' => $this->content, 'time' => $this->sys_time, 'ip' => $userip, 'server_time' => date('Y-m-d H:i:s')) )); try { $this->get('mailer')->send($message); // catch and other follows.
Config details are,
mail_contact_from: [email protected] mail_contact_to: [email protected] mail_contact_sub: Contact info
I passed only this details and all settings are default. If any info needed please ask i'l post.
Reason i'm changing from symfony2 project to this ordinary php+swift+twig is my hosting is only 100mb and i need to upload more images. But symfony2 occupy more space.
-
Sudhakar Krishnan over 10 yearsPlease check the question, symfony2 code works. Is symfony2 code runs without OpenSSL? Then is it sending mail without gmail config.
-
Filippos Karapetis over 10 yearssymfony2 is built on PHP. You seem to have an issue with your PHP configuration - either OpenSSL is not enabled, or PHP on your host is configured not to talk to other servers