[Yii Framework] Send Email with PHP Mailer

Berikut step-step mengirim email dengan menggunakan PHP Mailer dengan Yii Framework:

1. Download PHP Mailer extensions untuk Yii Framework disini.

2. Extract hasil downloadan anda, lalu pindahkan hasilnya ke dalam folder “protected/extensions/”.

3. Lalu buat sebuah action di controller anda seperti berikut:

public function actionKirimemail()
	{
    	$mailer = Yii::createComponent('application.extensions.mailer.EMailer');
     	$mailer->IsSMTP();
     	$mailer->IsHTML(true);
     	$mailer->SMTPAuth = true;
     	$mailer->SMTPSecure = "ssl";
     	$mailer->Host = "smtp.gmail.com";
     	$mailer->Port = 465;
     	$mailer->Username = "alamatemailpengirim@gmail.com";
     	$mailer->Password = 'passwordemailpengirim';
     	$mailer->From = "Sabit Huraira";
     	$mailer->FromName = "Percobaan Kirim Email";
     	$mailer->AddAddress("alamatemailtujuan@yahoo.com");
     	$mailer->Subject = "Percobaan.";
     	$mailer->Body = "Ini hanya percobaan mengirim email.";
     	if($mailer->Send()) 
     	{
          	echo "Message sent successfully!";
     	}
     	else 
     	{
          echo "Fail to send your message!";
     	}
	}

Penjelasan : code di atas akan melakukan pengiriman email. Anda harus melakukan konfigurasi email pengirim+password nya beserta beberapa attribut lain sesuai dengan yang anda butuhkan.

Jalankan action di atas dengan cara mengarahkan browser anda pada link actionnya..

Selesai…

Catatan : jika saat anda menjalankan fungsi tersebut lalu anda menemukan pesan error seperti berikut : SMTP Error: Could not connect to SMTP host.

Anda harus aktifkan terlebih dahulu open_ssl.dll di php.ini anda

Selamat mencoba..

Semoga membantu..😀

57 Responses to [Yii Framework] Send Email with PHP Mailer

  1. Pingback: [Yii Framework] Halaman Register dengan Password Generate dan Email Confirmation « Sabitlabscode

  2. sarah says:

    ka ko muncul error seperti ini ya
    SMTP Error: Could not connect to SMTP host. Message sent successfully!
    dan pesannya juga belum terkirim, padahal opensslnya sudah sy aktifkan di php.ini
    trims

  3. udah di restart server nya?

  4. dewi says:

    bit, mau nanya, cara aktifin open_ssl.dll di php. gimana ya??
    trus alamat email pengirim dan penerimanyanya harus itu ya??

  5. kalo kau pake wamp, coba cari di wamp/bin/php/php5.3.5/php.ini
    terus search ada di file nya tulusan “open_ssl”, nanti di baris itu biasa nya di awali dengan char “;” dihilangin aja wi, character itu, trus save.

    Terus di icon wamp yang ada di icon, klik, ntar ada pilihan “PHP”, pilih, terus pilih menu “php.ini” nanti muncul file php.ini, diganti juga seperti intruksi pertama..

    kalo udah di restart wamp nya wi.. ada menu nya juga di wamp nya..

  6. sarah says:

    bisa ka kl pake sambungan inet spee*y, tp ko kl saya pake modem muncul error smtp terus ya. Tp kl pake sambungan inet berkabel lancar dan emailnya terkirim

    Ka sy mau tny kl sy ingin buat semacam web-based project organization yg ada fitur pembuatan gantt chart dan tampilan kegiatan seperti kalender bisa develop pake yii tidak? Dan apakah lebih mudah kl pake framework yii dibanding yg lain?
    Terima kasih sekali ka sudah banyak membantu para pemula yiiers

  7. bisa mbak, tapi kalo untuk mudah atau tidak itu relatif mbak.. untuk calendar, di Yii udah ada extension Full Calendar, untuk gantt chart mbak juga bisa googling aja library untuk buat gantt chart di full calendar..

  8. jack 89 says:

    pagi mas
    masih newbie nih
    mas udah baca tutorial yang mas kasih di atas tentang cara kirim email
    tapi masih bingung karena yg dijelasin cm bgian controllernya aja
    klo blh sekalian dilengkapi bagian view dan modelnya kaya apa
    ato mungkin punya link tutorial lain yang agak lengkap kirim email dengan php mailer
    t’x

  9. NewBie says:

    maaf gan ane mau nanya…. ko pas login nya jadi error…kaya gini error nya

    C:\xampp\yii\framework\db\CDbCommand.php(528)

    return $result;
    517 }
    518 catch(Exception $e)
    519 {
    520 if($this->_connection->enableProfiling)
    521 Yii::endProfile(‘system.db.CDbCommand.query(‘.$this->getText().$par.’)’,’system.db.CDbCommand.query’);
    522 $errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
    523 $message = $e->getMessage();
    524 Yii::log(Yii::t(‘yii’,’CDbCommand::{method}() failed: {error}. The SQL statement executed was: {sql}.’,
    525 array(‘{method}’=>$method, ‘{error}’=>$message, ‘{sql}’=>$this->getText().$par)),CLogger::LEVEL_ERROR,’system.db.CDbCommand’);
    526 if(YII_DEBUG)
    527 $message .= ‘. The SQL statement executed was: ‘.$this->getText().$par;
    528 throw new CDbException(Yii::t(‘yii’,’CDbCommand failed to execute the SQL statement: {error}’,
    529 array(‘{error}’=>$message)),(int)$e->getCode(),$errorInfo);
    530 }
    531 }
    532
    533 /**
    534 * Builds a SQL SELECT statement from the given query specification.
    535 * @param array $query the query specification in name-value pairs. The following
    536 * query options are supported: {@link select}, {@link distinct}, {@link from},
    537 * {@link where}, {@link join}, {@link group}, {@link having}, {@link order},
    538 * {@link limit}, {@link offset} and {@link union}.
    539 * @return string the SQL statement
    540 * @since 1.1.6

    sama UserIdentity nya

    \protected\components\UserIdentity.php(22): CActiveRecord->find(“LOWER(user)=?”, array(“admin”))

    * @return boolean whether authentication succeeds.
    18 */
    19 public function authenticate()
    20 {
    21 $username = strtolower($this->username);
    22 $user = User::model()->find(‘LOWER(user)=?’, array($username));
    23 if($user===null)
    24 $this->errorCode=self::ERROR_USERNAME_INVALID;
    25 else if(!$user->validatePassword($this->password))
    26 $this->errorCode = self::ERROR_PASSWORD_INVALID;
    27 else

    \protected\models\LoginForm.php(52): UserIdentity->authenticate()

    47 public function authenticate($attribute,$params)
    48 {
    49 if(!$this->hasErrors())
    50 {
    51 $this->_identity=new UserIdentity($this->username,$this->password);
    52 if(!$this->_identity->authenticate())
    53 $this->addError(‘password’,’Incorrect username or password.’);
    54 }
    55 }
    56
    57 /**

    \protected\controllers\SiteController.php(88): CModel->validate()

    83 // collect user input data
    84 if(isset($_POST[‘LoginForm’]))
    85 {
    86 $model->attributes=$_POST[‘LoginForm’];
    87 // validate user input and redirect to the previous page if valid
    88 if($model->validate() && $model->login())
    89 $this->redirect(Yii::app()->user->returnUrl);
    90 }
    91 // display the login form
    92 $this->render(‘login’,array(‘model’=>$model));
    93 }

    index.php(13): CApplication->run()

    08 defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
    09 // specify how many levels of call stack should be shown in each log message
    10 defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,3);
    11
    12 require_once($yii);
    13 Yii::createWebApplication($config)->run();

    Maaf Nih gan kebanyakan nanya ….Mohon diMaklum Masih Newbie….

  10. wah, panjang banget gan.. itu yang jelas ada kesalahan di coding untuk database nya gan..

  11. melya says:

    klo aktifi open_ssl.dll di php.ini di xampp gmn?

  12. coba masuk aja folder xampp nya mbak.. search aja file “php.ini” nya.. disana ngeditnya sama seperti di atas..

  13. RH says:

    di form tampilannya dikasih script apa ?

  14. contoh di atas ga pake tampilan mas,

  15. wanprabu says:

    Klo mau nambahin file attachment gmn ya caranya? mksh

  16. wah, saya lupa.. tapi ada cara nya mas.. coba googling aja..

  17. Nurman says:

    Gan klo ane mlah nemu erro kya gni
    You are not authorized to perform this action.
    knapa ya gan?

    #Newbie

  18. itu artinya agan belum kasih hak akses ke action tersebut..

  19. Mugi says:

    gan mau nanya , ini knapa yaa apanya yg salah,.
    SMTP Error: Could not connect to SMTP host.

    Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\barudakti\protected\extensions\mailer\phpmailer\class.phpmailer.php:522)

  20. itu udah di jelasin di atas gan..

  21. ka mau tanya, kalo tampilan nya bisa diganti ga ?
    jadi pesan di emailnya itu kya pake template gitu ..
    mksih .

  22. bisa.. kalo mau ada template mending di simpen di database template nya..

  23. petanyaan beda lagi :
    ka, kalo ga ada koneksi ke internet kan pasti keliatan tuh debug nya kaya gini :
    SMTP Error: Could not connect to SMTP host.
    PHP warning

    Cannot modify header information – headers already sent by (output started at D:\PKL\xampp\htdocs\cerah\protected\extensions\mailer\phpmailer\class.phpmailer.php:522) .. dll.

    nah gimana caranya buat ngatsin itu, jadi error seperti itu ga adain, atau ada pemberitahuan apalah gituu ka ..
    mohon bantuannya🙂

  24. mas_apri says:

    @Restu Herwanto. Coba ganti portnya dengan
    $mail->Port = ‘587’;

  25. endro says:

    if(!$mailer->Send())
    {
    echo “Message sent successfully!”;
    }
    else
    {
    echo “Fail to send your message!”;
    }
    }

    menjadi

    if(!$mailer->Send())
    {
    echo “Fail to send your message!”;

    }
    else
    {
    echo “Message sent successfully!”;
    }
    }

  26. oh iya gan.. ane baru nyadar.. thanks koreksi nya gan..

  27. Pingback: Send Email with PHP Mailer in Yii Framework | Live, Laugh, Love ~~ My Code

  28. Satrio says:

    Bang, saya nyoba pakai cara seperti diatas dan openssl.dll di php.ini sudah diaktifkan tapi masih gagal kirim email. Mohon koreksi dan pencerahannya bang. Makasih.

  29. udah di cek di spam nya gan? biasanya dia masuk ke sana..

  30. bucho says:

    gan, ane udh nyoba copas code diatas, udh nyoba setting openssl juga di php.ini. tapi masih dapet error kayak gini
    “SMTP Error: Could not connect to SMTP host. Message sent successfully!”
    tapi gk kekirim emailnya, udh dicek spam juga gk ada. gimana ya gan?:/

  31. openssl nya belum jalan gan..

  32. Devi Rachmawati says:

    Header -> SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host.

    Content -> Cannot modify header information – headers already sent by (output started at /home/perinasi/public_html/protected/extensions/mailer/phpmailer/class.phpmailer.php:522) => udh di ganti port.a jd 587 tetep sama..
    gmn?
    #newbie ^^

  33. extension open_ssl nya belum aktif mbak..

  34. Adispy18 says:

    gan ane di localhost bisa, tapi kalau pas di hosting muncul error :
    SMTP Error: Could not authenticate. Fail to send your message!
    kenapa ya gan……

  35. Adispy18 says:

    gan udah bisa ga jadi thx

  36. bucho says:

    gan, ane kok msh gk bisa yaa? extension openssl-nya udh jalan, udh direstart, tp msh tetep error. ane tambahin debug, hasil errornya jd gini
    SMTP -> ERROR: Failed to connect to server: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060)
    SMTP Error: Could not connect to SMTP host. Fail to send your message!

    kenapa ya gan? apa ada hubungannya dh port localhost ane yg diganti jd 8081?

  37. bucho says:

    gak jadi gan, udh bisa sekarang. ternyata karena ane make smartfr*n, di PHP.ini harus ada yg diubah jd smtp.smart.co.id
    thanks banget yaa..🙂

  38. mina says:

    cara ngasesnya lewat mana ???

  39. fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known

    kalo itu maksdunya eror dari mnanya yah?

  40. ajobegs says:

    Salam mas, why phpmailer ngak bisa attach file pdf yg baru di generate, contohnya begini :

    $content_PDF = $mpdf->Output(”, EYiiPdf::OUTPUT_TO_STRING); // dari mpdf, saya ngak mau save ke server (EYiiPdf::OUTPUT_TO_STRING), tapi terus aja di emailkan.

    $mailer = Yii::createComponent(‘application.extensions.mailer.EMailer’); //dari phpmailer

    …..

    $mailer->AddAttachment( $content_PDF);

    if($mailer->Send())
    {
    echo “Message sent successfully!”;
    }
    else
    {
    echo “Fail to send your message!”;
    }

    setelah email diterima, attachment nya ngak ada mas..

    mohon pencerahan.

  41. Dv says:

    Saya pny trouble. untuk openssl di php.ini sdh aktif settingan sperti contoh udh sama. tapi ko email ga terkirim yaa??
    untuk eksekusi masuk ke db.a klo saya aktifkan isSMTP muncul notif yg error tp klo saya komen isSMTP nya bisa. jadi ada 2 msalah. ini msh di localhost (xamp).
    Mohon bantuannya..

    • kalo dari localhost saya kriim nya lewat gmail biasa nya gan.. agan lewat mana>? kalo di server harus di set dulu pastinya configurasi nya..
      btw, coba di cek di spam juga..

  42. kupruz says:

    kalo di hosting tp errornya “SMTP Error: Could not authenticate. Fail to send your message!” gimana bang?
    tapi openssl saya lihat di info php nya udah enabled .

  43. Ulla says:

    Mas, ini kok sya gak mau kekirim yah??
    Data akunnya tersave di DB, tp pesan emailnya tdk terkirim dan tdk ada pesan error).
    Kira2 itu kenapa yah mas, mohon bantuannya.😥

    Ini skrip di controller:
    public function actionCreate()
    {
    $model=new TabelAlumni(‘passwordset’);

    if(isset($_POST[‘TabelAlumni’]))
    {
    //$cekFile = $model->photo = CUploadedFile::getInstance($model, ‘photo’);
    //ItemsDate = ‘field_array’ pada /view/_form.php
    //$model->simpan($_POST[‘ItemsDate’]);
    $model->attributes = $_POST[‘TabelAlumni’];
    $simpanGambar = $model->photo = CUploadedFile::getInstance($model, ‘photo’);
    $model->tanggal_lahir=$_POST[‘TabelAlumni’][‘tanggal_lahir’];

    if($model->save())
    {
    if (isset($simpanGambar))
    {
    //$simpanGambar->saveAs(Yii::app()->basePath.’/../photo/’.$model->EMP_ID.’.png’);
    //$model->photo->saveAs(Yii::app()->basePath.self::URLUPLOAD.$model->photo.”);
    $simpanGambar->saveAs(Yii::app()->basePath.’/../images/fotoProfil/’.$model->photo.”);
    }

    $mailer = Yii::createComponent(‘application.extensions.mailer.EMailer’);
    $mailer->IsSMTP();
    $mailer->IsHTML(true);
    $mailer->SMTPAuth = true;
    $mailer->SMTPSecure = “ssl”;
    $mailer->Host = “smtp.gmail.com”;
    $mailer->Port = 465;
    $mailer->Username = “nash***@gmail.com”;
    $mailer->Password = ‘***********’;
    $mailer->From = “Admin”;
    $mailer->FromName = “Admin”;
    $mailer->AddAddress($model->email);
    //$mailer->CharSet = ‘UTF-8’;
    $mailer->Subject = “Data Alumni IKA TE PNUP”;
    $isi = ‘Hai ‘.$model->nama_lengkap.’ Anda telah melakukan registrasi dengan :
    Username : ‘.$model->username.’
    Password : ‘.$model->password.’
    Setelah Admin melakukan pengecekan terhadap data anda, anda akan mendapat email konfirmasi
    bahwa anda telah RESMI terdaftar di Ikatan Keluarga Alumni Teknik Elektro Politeknik Negeri Ujung Pandang (IKA TE PNUP).
    Terima Kasih.’;
    $mailer->Body = $isi;
    $mailer->Send();
    /*if($mailer->Send())
    {
    echo “Pesan telah berhasil dikirim”;
    }
    else
    {
    echo “Gagal mengirim pesan”;
    }*/

    //Yii::app()->user->setFlash(‘success’, ‘Well done! Data karyawan berhasil diperbaharui dan disimpan.’);
    $this->redirect(array(‘view’,’id’=>$model->id));
    }
    }

  44. andri says:

    tanya kalo di $mailer->From = “Sabit Huraira”; nah jika saya masukin satu hurup seumpanya
    $mailer->From = “Sabit”; maka itu gk tampil, tapi kalo du huru AKAN tampil di email http://www.imageupload.co.uk/images/2014/09/20/1.jpg

  45. pusing says:

    bang sabit
    saya udh turutuin semua tutornya,
    mulai dari extensi
    ampe eror smtp
    aktifkan openssl
    tapi ttp eror, kira” apanya lagi ya ? stack niih
    ini ss nya (http://www.imageupload.co.uk/image/5P66)
    mohon banget pencerahannya.

  46. Fayuzan says:

    mas sabit saya udah coba statement di atas , engga ada error , semua berjalan lancar ,
    tapi ko emailnya engga ke kirim iya
    mohon pencerahannya😀

  47. irham hanafi says:

    saya udh ngikutin tutorial yang membuat halaman regist dan email comprimation, si data pas di input udh masuk ke database tp ke email ngga ada, itu apa ya masalahnya gan ? tolong pencerahannya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: