Kirim Email via SMTP Server di PHP menggunakan PHPMailer

26
Kirim Email via SMTP Server di PHP menggunakan PHPMailer

Kirim email dari script adalah fitur yang sering digunakan untuk aplikasi web. Pada dasarnya, fungsi mail() dalam PHP digunakan untuk mengirim email dari script PHP. Saat kamu mengirim email menggunakan fungsi PHP mail(), email tersebut dikirim dari server web kamu. Kadang-kadang dapat menyebabkan masalah pada pengiriman email dan gagal untuk mengirim email ke penerima. Dengan SMTP kamu dapat mengatasi masalah ini, SMTP adalah cara yang paling direkomendasikan untuk mengirim email dari script PHP. Saat kamu mengirim email melalui SMTP, email dikirim dari server mail dan bukan dari web server.

Cara termudah untuk mengirim email di PHP dengan SMTP adalah dengan menggunakan library PHPMailer. PHPMailer memberikan kemampuan untuk mengirim email melalui server SMTP di PHP. Beragam pilihan konfigurasi library PHPMailer memungkinkan kita untuk mengirim email teks, email HTML, dan lampiran.

Mengirim email HTML

Gunakan isHTML(true) untuk mengatur format email ke HTML.

<?php
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;

// Konfigurasi SMTP
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'passwordmu';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->setFrom('[email protected]', 'Codingan');
$mail->addReplyTo('[email protected]', 'Codingan');

// Menambahkan penerima
$mail->addAddress('[email protected]');

// Menambahkan cc atau bcc 
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');

// Subjek email
$mail->Subject = 'Kirim Email via SMTP Server di PHP menggunakan PHPMailer';

// Mengatur format email ke HTML
$mail->isHTML(true);

// Konten/isi email
$mailContent = "<h1>Mengirim Email HTML menggunakan SMTP di PHP</h1>
    <p>Ini adalah email percobaan yang dikirim menggunakan email server SMTP dengan PHPMailer.</p>";
$mail->Body = $mailContent;

// Kirim email
if(!$mail->send()){
    echo 'Pesan tidak dapat dikirim.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}else{
    echo 'Pesan telah terkirim';
}

Mengirim email dengan lampiran

Gunakan method addAttachment() dari class PHPMailer untuk menambahkan lampiran ke email. Kamu dapat menambahkan beberapa lampiran ke email dengan menambahkan method addAttachment() beberapa kali.

// Menambahakn lampiran
$mail->addAttachment('lmp/file1.pdf');
$mail->addAttachment('lmp/file2.png', 'nama-baru-file2.png'); //atur nama baru

Mengirim email ke beberapa penerima

Tambahkan method addAddress() beberapa kali untuk mengirimkan email yang sama ke beberapa penerima.

// Menambahkan beberapa penerima
$mail->addAddress('[email protected]');
$mail->addAddress('[email protected]');

Mengirim email menggunakan Gmail SMTP

Jika kamu ingin menggunakan Gmail SMTP untuk mengirim email, kamu harus membuat beberapa perubahan dalam pengaturan akun Google!. Ikuti langkah-langkah di bawah ini untuk menggunakan Gmail SMTP di library PHPMailer.

  • Login ke akun Google kamu.
  • Masuk ke halaman Akun Saya. Klik Login ke Google dari bagian Login & Keamananan.
  • Scroll ke bawah ke bagian Metode login & sandi dan matikan Verifikasi 2 Langkah.
  • Mematikan verifikasi 2 langkah
  • Scroll ke bawah lagi ke bagian Aplikasi & situs yang terhubung dan aktifkan Izinkan aplikasi yang kurang aman.
  • Izinkan aplikasi yang kurang aman

Ok, selesai! Sekarang kamu dapat menggunakan Gmail SMTP untuk mengirim email dari script PHP. Tentukan kredensial akun Gmail kamu (alamat email dan password), SMTP host dan port.

// Konfigurasi SMTP
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'passwordmu';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

BAGIKAN
Subscribe
Beritahu
guest

26 Comments
terlama
terbaru vote teratas
Inline Feedbacks
View all comments
miftah
November 17, 2017 18:00

gimana cara setting yahoo di phpmailer?
apakah ada settingan lagi di yahoo nya
$mail->Host = “smtp.bizmail.yahoo.com”;
$mail->SMTPSecure = ‘ssl’;
$mail->Port = 465;
$mail->SMTPDebug = 2;

iqbal
iqbal
November 23, 2017 14:37

// Konfigurasi SMTP
$mail->isSMTP();
$mail->Host = ‘smtp.gmail.com’;
$mail->SMTPAuth = true;
$mail->Username = ‘[email protected]’;
$mail->Password = Rahasia’;
$mail->SMTPSecure = ‘tls’;
$mail->Port = 587;

//Eror:
Pesan tidak dapat dikirim.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Ali
Ali
Desember 12, 2017 09:40
Reply to  Codingan

iya sekarang aneh gan, udah di nonaktifkan ijin aplikasi kurang aman masih tetep gak bisa gan.. kenapa ya?

iqbal
iqbal
Desember 12, 2017 13:34
Reply to  Codingan

saya menambahkan code ini dan berhasil gan.
$mail->SMTPOptions = array(
‘ssl’ => array(
‘verify_peer’ => false,
‘verify_peer_name’ => false,
‘allow_self_signed’ => true
)
);
tp muncul masalah baru. kadang2 PHPMailer mengirim email duplicate gan. itu masalahnya kenapa ya gan? terima kasih

addam
addam
Juli 5, 2019 23:09
Reply to  iqbal

boleh tau itu scriptnya di taruh dimana

Anshar
Anshar
Desember 21, 2017 04:39

Pesan tidak dapat dikirim.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

gimana solusinya gan?

wesi
Januari 10, 2018 00:16

mail() lebih sering gagal krn dianggap spam sampe2 servicenya diblock oleh hosting.

Ya.. terpaksa coba phpmailer.

mantap tutorialnya langsung jalan begitu di copy ke folder publichtml. padahal sudah seminggu saya cobain tutorial hosting saya selalu error.

Many thanks masbro

wesi
Januari 10, 2018 00:41

tanya masbro… baru ngeh
cari ngilangin pengirim Codingan gimana ya 🙂

YUDHA
YUDHA
Februari 11, 2018 09:53

itu harus di upload di hosting atau bisa di jalankan pakai xampp?

arief
arief
Maret 29, 2018 01:24

kalo ngehidden pesan smtp setelah pesan berhasil dikirim gimana?
SMTP -> FROM SERVER:220 smtp.gmail.com ESMTP o88sm2955863pfk.91 – gsmtp
SMTP -> FROM SERVER: 250-smtp.gmail.com at your service, [61.94.133.59] 250- ……..
pencerahannya

yogi
yogi
Juli 24, 2018 23:12
Reply to  arief

Tambahkan coding

$mail->SMTPDebug = 0;

Frendy
Juni 11, 2018 18:18

gan kalo lampirannya di komentari atau di matikan apakah tetap jalan?

Frendy
Juni 11, 2018 18:37

berhasil gan terimakasih

Frendy
Juni 11, 2018 18:57

gan email pengirimnya bisakah di ganti dengan email web mail gan?

Adam
Adam
November 16, 2018 10:14
Reply to  Frendy

Bntu jawab. Bisa tuh bro

Ihsan
Ihsan
Juli 27, 2018 10:15

gan, bisa di modif untuk kirim email otomatis nggk, misal sebelum jatuh tempo maka kirim email ke cust otomatis.

Boleh japri gan.

heru
Oktober 28, 2018 21:22

Pesan tidak dapat dikirim.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

mohon solusinya

Novry
Oktober 30, 2018 09:43

Sekian lama w cari2 tutorial sendmail dari Fanpage,Youtube, Blog, baru ini yang bener-bener work wkwkwkwkwkw, Thanks min..

Sekarang mau bikin via isi form dulu gmn caranya min? wkwkkw

not found
not found
April 15, 2019 10:22

min saya coba tambah addAttachment kok gak muncul ya min?

Ipul Ardian
Ipul Ardian
November 15, 2019 10:50

Mantep bet dah…

Muhammad Juang
Muhammad Juang
Februari 10, 2022 17:36

ijin bertanya bagaimana kalau smtp dari outlook ya kak , karena saya coba dengan settingan ini selalu error
$mail->IsSMTP();
$mail->Host    = “outlook.office365.com”;
$mail->SMTPAuth = true;    
$mail->Username = “username”;
$mail->Password = “password”;
$mail->SMTPSecure = “tls”;
$mail->Port = “587”;
$mail->IsHTML(true);