To send emails using gmail’s smtp server, you must specify the tls port by providing the ‘ssl’ and ‘port’ in the config array. The default port for tls is 25 but gmail is using 587. You will also need to authenticate with your account and password.
Update: There’s a daily limit of outgoing emails you can send using this smtp, I experienced a problem of maxing my limit while sending out confirmation emails to the users of my facebook app. So if you are looking to do the same, just be warned that its a bad idea.
$config = array(
‘ssl’ => ‘tls’,
‘port’ => 587,
‘auth’ => ‘login’,
‘username’ => ‘sender@domain.com’,
‘password’ => ‘password’);
$transport = new Zend_Mail_Transport_Smtp(‘smtp.gmail.com’, $config);
//Use this if you do not want to specify $transport evertime you use Zend_Mail->send()
//Zend_Mail::setDefaultTransport($transport);
$mail = new Zend_Mail();
$mail->setBodyText(‘Email body in plain text’);
$mail->setBodyHtml(‘Email body in HTML’);
$mail->setFrom(‘sender@domain.com’, ‘Name of sender’);
$mail->setReplyTo(‘sender@domain.com’,’Name of sender’);
$mail->addTo(‘recipient@targetdomain.com’, ‘Name of recipient’ );
$mail->setSubject(‘Your trial at FItness First’);
$mail->send($transport);
You can use your own domain name using gmail’s coporate email service, if not, just use gmail.com for the domain.
Catch, gmail automatically replaces whatever ‘from’ or ‘reply-to’ you have specified with the account you are authenticating with (sender@domain.com). To use another account, you must allow gmail to send using that email address by following the steps here.
Hey,
Had you any luck trying to load the smtp parameters from the zend application.ini file?
Hey emeraldjava, not sure if this is the most efficient way, but this is what I do usually: 1. Define the params in my application.ini, 2. load the params in bootlstrap, 3.read the params from Zend_Registry where I need them.
In application.ini:
; SMTP configuration
smtpConfig.ssl = "tls"
smtpConfig.port = "587"
smtpConfig.auth = "login"
smtpConfig.username = "sender@domain.com"
smtpConfig.password = "password"
Load it in my bootstrap:
protected function _initConfig(){
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini',APPLICATION_ENV);
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
$registry->set('smtpConfig', $config->smtpConfig);
...
...
return $config;
}
Then access it else where by getting it from Zend_Registry
$smtpConfig = Zend_Registry::get('smtpConfig');
Really useful post! Thanks a lot Ryan. Greetings from Brazil. \o
Hi Lucas, glad that it helped 🙂
hi this is from zend
Yes this is for the Zend Framework
Hi ryan please send complete source code regarding sending mail.
Thank you 😀
its works perfectly x)