Tutorial yang akan kita bahas kali ini adalah mengenai cara mengirim email melalui website baik itu yang dijalankan di komputer local (localhost) ataupun di komputer server / hosting. Sebelumnya saya juga telah membuat tutorial ini tapi untuk versi PHP Native nya (bisa kalian lihat disini). Sementara kali ini kita akan membuatnya dengan menggunakan salah satu Framework yang cukup banyak digunakan yakni Codeigniter (versi 3). Dan juga kita akan memanfaatkan librari PHPMailer untuk proses kirim emailnya. Sebelum masuk ke langkah-langkah cara membuatnya. Apakah anda sudah mengetahui apa yang dimaskud dengan SMTP? SMTP atau singkatan dari Simple Mail Transfer Protocol adalah sebuah protokol yang berguna untuk mengirimkan sebuah pesan elektronik (email). Maka dari itu untuk mengirim sebuah email kita membutuhkan SMTP sebagai perantara untuk mengirimkan email tersebut. Dalam tutorial ini kita akan menggunakan SMTP Gmail. DEMO STEP 1 – PERSIAPAN
STEP 2 – KONFIGURASI
STEP 3 – LIBRARI MAILER <?php defined('BASEPATH') OR exit('No direct script access allowed'); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; class Mailer { protected $_ci; protected $email_pengirim = ''; // Isikan dengan email pengirim protected $nama_pengirim = 'Rizaldi Maulidia Achmad'; // Isikan dengan nama pengirim protected $password = 'password_akun_email_pengirim'; // Isikan dengan password email pengirim public function __construct(){ $this->_ci = &get_instance(); // Set variabel _ci dengan Fungsi2-fungsi dari Codeigniter require_once(APPPATH.'third_party/phpmailer/Exception.php'); require_once(APPPATH.'third_party/phpmailer/PHPMailer.php'); require_once(APPPATH.'third_party/phpmailer/SMTP.php'); } public function send($data){ $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->Username = $this->email_pengirim; // Email Pengirim $mail->Password = $this->password; // Isikan dengan Password email pengirim $mail->Port = 465; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; // $mail->SMTPDebug = 2; // Aktifkan untuk melakukan debugging $mail->setFrom($this->email_pengirim, $this->nama_pengirim); $mail->addAddress($data['email_penerima'], ''); $mail->isHTML(true); // Aktifkan jika isi emailnya berupa html $mail->Subject = $data['subjek']; $mail->Body = $data['content']; $mail->AddEmbeddedImage('image/logo.png', 'logo_mynotescode', 'logo.png'); // Aktifkan jika ingin menampilkan gambar dalam email $send = $mail->send(); if($send){ // Jika Email berhasil dikirim $response = array('status'=>'Sukses', 'message'=>'Email berhasil dikirim'); }else{ // Jika Email Gagal dikirim $response = array('status'=>'Gagal', 'message'=>'Email gagal dikirim'); } return $response; } public function send_with_attachment($data){ $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->Username = $this->email_pengirim; // Email Pengirim $mail->Password = $this->password; // Isikan dengan Password email pengirim $mail->Port = 465; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; // $mail->SMTPDebug = 2; // Aktifkan untuk melakukan debugging $mail->setFrom($this->email_pengirim, $this->nama_pengirim); $mail->addAddress($data['email_penerima'], ''); $mail->isHTML(true); // Aktifkan jika isi emailnya berupa html $mail->Subject = $data['subjek']; $mail->Body = $data['content']; $mail->AddEmbeddedImage('image/logo.png', 'logo_mynotescode', 'logo.png'); // Aktifkan jika ingin menampilkan gambar dalam email if($data['attachment']['size'] <= 25000000){ // Jika ukuran file <= 25 MB (25.000.000 bytes) $mail->addAttachment($data['attachment']['tmp_name'], $data['attachment']['name']); $send = $mail->send(); if($send){ // Jika Email berhasil dikirim $response = array('status'=>'Sukses', 'message'=>'Email berhasil dikirim'); }else{ // Jika Email Gagal dikirim $response = array('status'=>'Gagal', 'message'=>'Email gagal dikirim'); } }else{ // Jika Ukuran file lebih dari 25 MB $response = array('status'=>'Gagal', 'message'=>'Ukuran file attachment maksimal 25 MB'); } return $response; } } $mail->isSMTP(); $mail->Host = ‘smtp.gmail.com’; $mail->Username = $this->email_pengirim; $mail->Password = $this->password; $mail->Port = 465; $mail->setFrom($this->email_pengirim, $this->nama_pengirim); $mail->addAddress($data[’email_penerima’], ”); $mail->isHTML(true); $mail->Subject = $data[‘subjek’]; $mail->Body = $data[‘content’]; $mail->AddEmbeddedImage(‘image/logo.png’, ‘logo_mynotescode’, ‘logo.png’); $mail->addAttachment($data[‘attachment’][‘tmp_name’], $data[‘attachment’][‘name’]); $mail->send() STEP 4 – CONTROLLER <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Email extends CI_Controller { public function index(){ $this->load->view('email'); } public function send(){ $this->load->library('mailer'); $email_penerima = $this->input->post('email_penerima'); $subjek = $this->input->post('subjek'); $pesan = $this->input->post('pesan'); $attachment = $_FILES['attachment']; $content = $this->load->view('content', array('pesan'=>$pesan), true); // Ambil isi file content.php dan masukan ke variabel $content $sendmail = array( 'email_penerima'=>$email_penerima, 'subjek'=>$subjek, 'content'=>$content, 'attachment'=>$attachment ); if(empty($attachment['name'])){ // Jika tanpa attachment $send = $this->mailer->send($sendmail); // Panggil fungsi send yang ada di librari Mailer }else{ // Jika dengan attachment $send = $this->mailer->send_with_attachment($sendmail); // Panggil fungsi send_with_attachment yang ada di librari Mailer } echo "<b>".$send['status']."</b><br />"; echo $send['message']; echo "<br /><a href='".base_url("index.php/email")."'>Kembali ke Form</a>"; } } Pada controller ini, kita membuat 2 fungsi. fungsi pertama yaitu public function index(). Dalam fungsi ini terdapat kode $this->load->view(’email’);. Kode tersebut berfungsi untuk memuat (meload) file email.php (file ini akan kita buat pada step selanjutnya). Fungsi yang kedua yaitu public function send(). Fungsi ini berguna untuk melakukan pengiriman email. $this->load->library(‘mailer’) $email_penerima = $this->input->post(‘email_penerima‘); $content = $this->load->view(‘content‘,
array(‘pesan’=>$pesan), true); $this->EmailModel->upload() STEP 6
– FORM <html> <head> <title>Kirim Email dengan CodeIgniter</title> </head> <body> <div style="padding: 5px 30px;"> <h2>Kirim Email dengan Framework Codeigniter</h2> <hr /> <?php echo form_open('email/send', ['method'=>'post', 'enctype'=>'multipart/form-data']) ?> <div style="margin-bottom: 10px;"> <label>Kepada</label><br /> <input type="email" name="email_penerima" placeholder="Email Penerima" style="margin-top: 5px;width: 400px" /> </div> <div style="margin-bottom: 10px;"> <label>Subjek</label><br /> <input type="text" name="subjek" placeholder="Subjek" style="margin-top: 5px;width: 400px" /> </div> <div style="margin-bottom: 10px;"> <label>Pesan</label><br /> <textarea name="pesan" placeholder="Pesan" rows="8" style="margin-top: 5px;width: 400px"></textarea> </div> <div style="margin-bottom: 20px;"> <label>Attachment</label><br /> <input type="file" name="attachment" style="margin-top: 5px;width: 400px" /> </div> <hr /> <button type="submit">KIRIM EMAIL</button> <?php echo form_close() ?> </div> </body> </html> STEP 7 – CONTENT EMAIL <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> </head> <body> <div style="float: left;margin-right: 10px;"> <img src="cid:logo_mynotescode" alt="Logo" style="height: 50px"> </div> <h2 style="margin-bottom: 0;">My Notes Code</h2> https://www.mynotescode.com <div style="clear: both"></div> <hr /> <div style="text-align: justify"> <?php echo $pesan; // Tampilkan isi pesan ?> </div> </body> </html> <img src=”cid:logo_mynotescode” alt=”Logo” style=”height: 50px”> STEP 8 – SETTING GOOGLE ACCOUNT
Sekian untuk tutorial kali ini. Jika ada hal yang ingin ditanyakan, langsung tanyakan saja lewat kolom komentar dibawah ini. Jangan lupa LIKE dan SHARE nya hehe, Terimakasih. Happy Coding ^_^ SOURCE CODE SUMBER & REFERENSI Mengirim Email(Total : 13,376 viewers, 1 viewers today) |