Mengirimkan Email di YiiFramework dengan yii-mail
Mengirimkan email dalam suatu website untuk berinteraksi dengan usernya memang merupakan satu fitur wajib bagi website tersebut.Nah bagi temen-teman atau pengguna yii yang lain, mungkin pernah mengalami error bagaimana mengirikan email dengan menggunakan php atau yiiframework.
Salah satu error yang muncul jika kita menggunakan perintah mail() dalam php adalah tidak adany mail server yang bisa terhubung.
Error yang keluar mungkin seperti ini :
mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Itu dikarenakan di localhost tidak ada mail server sehingga tidak bisa mengirimkan email untuk mengirimkan email ini anda harus menginstall mail server dulu di local. Salah satunya adalah hMailServer.
Atau jika kita tidak bisa menggunakan server lokal kita bisa menggunakan email lain dengan setting SMTP dari email tersebut.
Pada kesempatan kali ini ane ingin share bagaimana kita mengirimkan email menggunakan yii-mail extension. Sebelumnya download dulu yii-mail extension di sini. Okeh langsung aja extract kemudian masukan ke dalam /protected/extensions/
Pertama kali setting untuk email di config mainnya seperti ini :
'components'=>array( 'mail' => array( 'class' => 'ext.yii-mail.YiiMail', 'transportType' => 'php', 'viewPath' => 'application.views.mail', 'logging' => true, 'dryRun' => false,Nah kalau kita ingin menggunakan email dari provider lain contohnya disini yahoo bisa pakai setting sebagai berikut :
'mail' => array( 'class' => 'ext.yii-mail.YiiMail', 'transportType'=>'smtp', 'transportOptions'=>array( 'host'=>'smtp.mail.yahoo.com', 'username'=>'nama_email',//contohna nama_email@yahoo.co.id 'password'=>'xxxx', 'port'=>'465', 'encryption'=>'ssl', ), 'viewPath' => 'application.views.mail', 'logging' => true, 'dryRun' => false )Terus bagaimana caranya kita untuk mengirimkannya simple jangan lupa ubah dulu email dari pengirimnya di main
'params'=>array(
// this is used in contact page
'adminEmail'=>'nama_email@yahoo.co.id',
),
Setealah itu coba mengirimkan email
Yii::import('ext.yii-mail.YiiMailMessage'); $message = new YiiMailMessage; $message->setBody('Message content here with HTML', 'text/html'); $message->subject = 'My Subject'; $message->addTo('viyanatmail@gmail.com'); $message->from = Yii::app()->params['adminEmail']; Yii::app()->mail->send($message);
Nah kalo SMTP Google tinggal diganti deh settingnya sebagai berikut :
Incoming Mail (POP3) Server - requires SSL: | pop.gmail.com Use SSL: Yes Port: 995 |
Outgoing Mail (SMTP) Server - requires TLS3 or SSL: | smtp.gmail.com (use authentication) Use Authentication: Yes Port for TLS/STARTTLS: 587 Port for SSL: 465 |
Account Name: | your full email address (including @gmail.com or @your_domain.com) |
Email Address: | your email address (username@gmail.com or username@your_domain.com) |
Password: | your Gmail password |