Cara menggunakan phpmailer dengan SMTP berikut attachment
mengirim email menggunakan phpmailer dengan mudah.
berikut struktur folder dan file yg akan kita persiapkan:
www/mail_setup/class.phpmailer.php
www/mail_setup/class.smtp.php
www/mail_setup/mail.php
www/kontak.php
file mail.php isinya adalah setup configurasi SMTP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php // konfigurasi $set_smtp_host = "mail.namadomain.com"; $set_smtp_user = "user_email@namadomain.com"; $set_smtp_pass = "password-nya"; require_once ('/mail_setup/class.smtp.php'); require_once ('/mail_setup/class.phpmailer.php'); $PHPMAILER_LANG = array(); $PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' . 'recipient email address.'; $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.'; $PHPMAILER_LANG["execute"] = 'Could not execute: '; $PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.'; $PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.'; $PHPMAILER_LANG["from_failed"] = 'The following From address failed: '; $PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' . 'recipients failed: '; $PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.'; $PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.'; $PHPMAILER_LANG["file_access"] = 'Could not access file: '; $PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: '; $PHPMAILER_LANG["encoding"] = 'Unknown encoding: '; $mail = new PHPMailer(); // setting SMTP $mail->IsSMTP(); // send via SMTP $mail->Host = $set_smtp_host; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = $set_smtp_user; // SMTP username $mail->Password = $set_smtp_pass; // SMTP password ?> |
dan ini contoh file kontak.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<?php // MAIL & ATTACHMENT $isi = ""; $error = 0; $form = 1; $max_file = 1048577; // 1 MB if($_POST['submit']) { $name = strip_tags($_POST[name]); $email = strip_tags($_POST[email]); $subject = strip_tags($_POST[subject]); $file1_path = $_FILES['file_att']['tmp_name']; $file1_name = $_FILES['file_att']['name']; $file1_type = $_FILES['file_att']['type']; $file1_size = $_FILES['file_att']['size']; // cek file if($file1_size > 0) { if($file1_size <= $max_file) { require_once ('mail_setup/mail.php'); $mail->From = $email; // email pengirim $mail->FromName = $name; // nama pengirim $mail->AddAddress($set_email_hrd, $set_web_title); // penerima $mail->AddReplyTo($email, $name); // kirim balik reply ke $mail->WordWrap = 50; // set word wrap $mail->AddAttachment($file1_path, $file1_name); $mail->IsHTML(false); // send as HTML $mail->Subject = $subject; $mail->Body .= "Name: $name\n"; $mail->Body .= "Email: $email\n"; $mail->Body .= "\n\n"; $mail->Body .= "----------\n"; $mail->Body .= $set_web_title."\n"; $mail->Body .= $web."\n"; if(!$mail->Send()) { $error = 1; echo "<script>alert('Sorry, Mail Sent Error..., please try again.');</script>"; } else { // EMAIL sukses terkirim $email_success = "<div class=\"good\">Email Sent Sucessfull.<br/>Thank You.</div>"; $form = 0; } } else { $error = 1; echo "<script>alert('File terlalu besar! (Max. ".format_size($max_file).")');</script>"; $error_cv = "<br/><span class=\"warning\">File terlalu besar, (Max. ".format_size($max_file).")</span>"; } } else { $error = 1; $error_cv = "<br/><span class=\"warning\">File Kosong!</span>"; echo "<script>alert('File Kosong!');</script>"; } } if($error == 1) { $error_view = "<span class=\"warning\">Error!</span>"; } if($form == 1) { // FORM APPLY $isi .= "<hr noshade=\"noshade\" size=\"1\" color=\"#cccccc\" width=\"80%\"><br/>"; $isi .= "<div align=\"center\">"; $isi .= "<form method=\"POST\" name=\"myform\" enctype=\"multipart/form-data\" style=\"padding:0; margin:0; \">"; $isi .= " <table border=0 cellspacing=0 bgcolor=\"#ffffff\" cellpadding=0 width=\"98%\">"; $isi .= " <tr>"; $isi .= " <td bgcolor=\"#ffffff\">"; $isi .= " ".$error_view; $isi .= " <table border=0 cellspacing=1 cellpadding=2 bgcolor=\"#ffffff\" width=\"100%\">"; $isi .= " <tr>"; $isi .= " <td colspan=2>"; $isi .= " <h2>Form </h2>"; $isi .= " </td>"; $isi .= " </tr>"; $isi .= " <tr>"; $isi .= " <td bgcolor=\"#ffffff\" width=100>"; $isi .= " Name"; $isi .= " </td>"; $isi .= " <td bgcolor=\"#ffffff\">"; $isi .= " : <input type=\"text\" name=\"name\" size=\"30\" value=\"".$name."\">"; $isi .= " </td>"; $isi .= " </tr>"; $isi .= " <tr>"; $isi .= " <td bgcolor=\"#ffffff\" width=100>"; $isi .= " Email"; $isi .= " </td>"; $isi .= " <td bgcolor=\"#ffffff\">"; $isi .= " : <input type=\"text\" name=\"email\" size=\"30\" value=\"".$email."\">"; $isi .= " </td>"; $isi .= " </tr>"; $isi .= " <tr>"; $isi .= " <td bgcolor=\"#ffffff\" width=100 valign=top>"; $isi .= " File"; $isi .= " </td>"; $isi .= " <td bgcolor=\"#ffffff\">"; $isi .= " : <input type=\"file\" name=\"file_att\" size=\"30\">"; $isi .= " (Max. ".format_size($max_file).")".$error_cv; $isi .= " </td>"; $isi .= " </tr>"; $isi .= " <td bgcolor=\"#ffffff\" colspan=2>"; $isi .= " <input type=\"submit\" name=\"submit\" value=\"Submit\">"; $isi .= " </td>"; $isi .= " </tr>"; $isi .= " </table>"; $isi .= " </td>"; $isi .= " </tr>"; $isi .= " </table>"; $isi .= "</form>"; $isi .= "</div>"; } echo $isi; ?> |
Download file:
contoh_email_smtp_phpmailer.zip (20.3 KiB, 6,893 hits, Updated: 14 April 2011)
(sudah termasuk class phpmailer dan contoh file)
Tambahan fungsi format_size sbb.:
1 2 3 4 5 |
function format_size($rawSize) { if ($rawSize / 1048576 > 1) return round($rawSize/1048576, 1) . 'MB'; elseif ($rawSize / 1024 > 1) return round($rawSize/1024, 1) . 'KB'; else return round($rawSize, 1) . 'bytes'; } |
Note: fungsi format_size tdk termasuk pada download script zip.
makasih bro…
gw coba2 dulu ya…
ok ini yg dicari2 neh… tq ya
dah gw coba ko masih ada errornya ya?
Fatal error: Call to undefined function format_size() in kontak.php on line 97
salahnya dmn?
tq
mas Erik,
saya lupa masukkan fungsi format_size.
ini fungsinya:
Terimakasih atas komentarnya 🙂
setelah googling2 sampe capek.
akhirnya… artikel ini banyak membantu.
aku coba udah oke.
thanks banget..
terima kasih banyak ya.
ko masih ga mau jalan yah??
harus punya mail server sendiri atau pake gmail juga bisa??
kalo bisa minta config yang buat gmail.
kalo cuma bisa pake mail server sendiri bisa recommend ga mail server yang bisa gratis n gampang confignya?
thanks.
@Trisa, disini ada kok cara setting yg untuk smtp gmail:
http://www.nusansifor.com/2008/12/cara-konfigurasi-phpmailer-menggunakan-gmail-account/
jangan lupa diaktifkan pop3 nya di settingan account gmail nya.
Mas sku coba yang PHPMailer_v5.1 bisa kirim email pake attachment tapi waktu dimasukin ke hosting kok malah error kaya gini:SMTP -> ERROR: Failed to connect to server: Connection timed out (110)
SMTP Error: Could not connect to SMTP host.
kira2 apanya yang hrs dirubah ya
Thks
@Edse, disitu menurut keterangan error yg Anda dapat adalah:
SMTP host email yang Anda tuju tidak aktif.
Mohon aktifkan SMTP server Anda.
Jika menggunakan hosting cPanel, dapat dilihat pada Menu Mail, dan lihat bagaimana cara koneksi menggunakan SMTP (biasanya ada petunjuk seperti untuk Outlook).
Jika menggunakan account Gmail, jangan lupa aktifkan SMTP pada Gmail Anda, dan ikuti langkah artikel berikut http://www.nusansifor.com/2008/12/cara-konfigurasi-phpmailer-menggunakan-gmail-account/
Warning: main(/mail_setup/class.smtp.php) [function.main]: failed to open stream: No such file or directory in E:\Web\contoh_email_smtp_phpmailer\mail_setup\mail.php on line 7
Fatal error: main() [function.require]: Failed opening required ‘/mail_setup/class.smtp.php’ (include_path=’.;c:\apachefriends\xampp\php\pear\’) in E:\Web\contoh_email_smtp_phpmailer\mail_setup\mail.php on line 7
kalo error kayak gt kenapa ya??
Gina, coba perhatikan dan sesuaikan alamat include nya dgn penempatan dimana file2 itu berada:
kalau posisinya sama, gak perlu kasih tanda “/” lagi, pada include nya, nah kalau “/” paling depan itu artinya dari root folder web nya.
masih eror gan…
maaf, aku kan udah download filenya yang di atas.. apa ajah sih yang harus aku konfigurasi dari file-file itu…
maaf ya gan… ngerepotin, maklum masih baru di dunia pemrograman, jadi kurang begitu ngerti..
thanks ya gan atas bantuannya…
koq ga bs terkirim ya mas??
Sorry, Mail Sent Error…, please try again.
apanya yg error??
nah… yg kata ventha bilang mas, saya juga errornya dr msgbox aja.
padahal dah active POP/IMAP di gmail sy. apa penyebabnya ya?
oia, waktu nambahain script dr artikel mas yg buat setting phpmailer, codenya :
$mail->SMTPSecure = “ssl”; // SSL Support
$mail->Port = 465; // Port
(code ini gk ada di file yg di download di sini)
trus waktu dijalankan malah ad pesen :
unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?)
waah…jd bingung, ap email yg dkrim harus gmail smua? mhon pencerahannya, trima kasih.
waaah….mas, ventha, setelah sy googling n coba2 lagi, ternyata code di :
$set_smtp_host = “smtp.gmail.com”;
diubah menjadi :
$set_smtp_host = “ssl://smtp.gmail.com:465”;
trus error dari :
“did you forget to enable it when you configured PHP”
itu karna di file php.ini nya belum diaktifkan modul :
extension=php_openssl.dll
setelah itu, beres dah.. cuma yang masih jd pertanyaan, apkah krim ke mail yahoo gk bisa? karna ktika dicoba, hanya ke email yahoo saja yang tidak terkirim 🙁
tapi apapun hasilnya skrng, sy ucapin buat mas atas ilmunya ya 😀
mas saya masih bingung bagaimana menggunakan php mailer nya…??? masih bingung yg mau d konfigurasi..thanks
Sorry, Mail Sent Error…, please try again.
itu kenapa yah mas..?
thx b4
Saya sudah coba PHP mailer ini … emang siip , sudah ane coba sekitar 1 bulan .
Cuma sekarang rada rewel ….. setelah pindah server
Ada saran …… Trims sebelumnya ,
saya coba kok erorr ya,, apa ada yang kurang ya seting nya,,
mohon infonya..
terimaksih
fungsi funcion format size nya di taruh sebelah mananya??
@mis3, silahkan di cek kembali settingan sesuai dengan info yg tertera
@Abah Petir, skrng sudah lumayan ketat pada pembatasan mengirim email di beberapa pelayanan hosting.
@muslim, error nya bagaimana? saya dan kawan2 masih pakai dan masih berfungsi dengan baik.
@sashy, silahkan disispkan fungsi format_size nya di file kontak.php pada akhir sebelum penutupan script php.
thanks gan sudah bisa.
dalam kasus di atas misal :
abc @ ymail;123 @ ymail.com = exist dan quota ok
xyz @ ymail.com = exist dan quota ok
ccc @ ymail.com = nama sembarang email
ccc @ ymail.com = adalah email yang tidak terdaftar / exist di domain ymail.com
logika nya dan harus nya email akan tetap terkirim ke pada email lain nya kecuali ccc @ ymail.com ( ke tiga email yang valid )
pengiriman tersebut gagal. ada solusi ?
terima-kasih
salam
mulyono
@Mulyono Rafianto,
Salam mas, sepertinya ada keanehan pada server mail nya.
Seharusnya bila ada salah satu cc yang tidak valid, tidak berpengaruh terhadap email yg valid, semestinya email tersebut terkirim kepada email yang valid.
Sekedar saran, silahkan dicoba kembali dan dilihat apakah sudah benar alamat2 email tujuan email dan alamat cc nya, di debug dahulu tampilkan alamat2 yang akan dikirim, kemungkinan ada kesalahan dalam hasil array, nya.
Selamat mencoba, semoga bisa berhasil.
Bang, saya mau tanya saya udah coba apa yang abang kasih tahu di atas , cuma ada sedikit masalah, ketika saya kirim kealamat email yang gak jelas “misalnya: test@yahooxx.com “, distatus error dari kelas smtp katanya oke malah dapet messageIdnya.
padahal kan itu alamat email yang gak bener, gimana caranya supaya dapet balikan yang menyatakan bahwa email sudah keterima sama email yang kita tuju, karena kalau cuma di handle di sisi :
if(!$mail->send()){
print ‘0’; //failed
}
else{
print ‘1’; //success
}
kayak belum bisa dipastikan email keterima sama si recepient,
walaupun function send() berhasil di ekseskusi, Mohon penjelasan dan jawabannya , kalau bisa di balas ke email saya bang terimaksih…..
@Rahmatttullah, pengiriman email dengan alamat domain yg tdk valid bisa terdeteksi setelah pengiriman email berhasil, kita akan menerima email dari server mail kita, contohnya seperti ini:
Lalu ada keterangan alamat email yg dikirim nya.
Dan ini memang sudah aturan mail system, berlaku jg pada pengiriman email lewat Yahoo Webmail, Gmail Webmail, dan fasilitas pengiriman Email lain nya.
Makasih mas tutorialnya…
tp dah q coba beberapa kali kok tetep aja gagal ya…
pesan error “Sorry, Mail Sent Error…, please try again”
pdhl udah coba konfigurasi…
Nyampe frustasi ni… :{
ka, maaf mau nanya, klu utk settingan po3 ny cukup di gmail aja ato ada kodinganny jg ya? soal ny di settingan gmail sdh di enable, tp masih error send mail ny..
senasib berarti…
pesan error “Sorry, Mail Sent Error…, please try again”
gimana cara ngakalinnya ya 😕
penempatan
function format_size($rawSize) {
if ($rawSize / 1048576 > 1) return round($rawSize/1048576, 1) . ‘MB’;
elseif ($rawSize / 1024 > 1) return round($rawSize/1024, 1) . ‘KB’;
else return round($rawSize, 1) . ‘bytes’;
}
di file mana yah?
@cepi, di file kontak.php
ane klik submit kok gini ya ?
Warning: require_once(/mail_setup/class.smtp.php): failed to open stream: No such file or directory in /home/seven/public_html/mail_setup/mail.php on line 7
Fatal error: require_once(): Failed opening required ‘/mail_setup/class.smtp.php’ (include_path=’.:/opt/php54/lib/php’) in /home/seven/public_html/mail_setup/mail.php on line 7
pastikan file /home/seven/public_html/mail_setup/mail.php ada, coba dicek kembali.
phpmailer sudah running di localhost pc, tp setelah upload hosting dengan os linux, mail tdk berfungsi, ada saran?
Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:25 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?) in G:\xampplite\htdocs\contoh_email_smtp_phpmailer\mail_setup\class.smtp.php on line 122 kenapa ya gan?
di komentar dari @Kaze sudah dijawab diatas, ini saya ulang disini:
$set_smtp_host = “smtp.gmail.com”;
diubah menjadi :
$set_smtp_host = “ssl://smtp.gmail.com:465″;
trus error dari :
“did you forget to enable it when you configured PHP”
itu karna di file php.ini nya belum diaktifkan modul :
extension=php_openssl.dll
Semoga berhasil gan.
mas kalo masalah kya gini gimana
Our system has detected that this message is550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail,
@Fajar, mas Gmail sekarang mensyaratkan untuk supaya set SPF dengan benar.
Contoh penggunaan cara setup di server nya ada disini mas https://support.google.com/a/answer/178723
gan ane keluar kaya gini Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
mohon solusinya. Terima Kasih
Apakah PHPMailer nya menggunakan versi yg sama dgn yang ada disini?
Mas, Mohon Bantuannya. Kok error terus ya?
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\mail\mail_setup\class.smtp.php on line 122.
Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://ssl://smtp.gmail.com:465 (Unknown error) in C:\xampp\htdocs\mail\mail_setup\class.smtp.php on line 122
terima kasih, mas .. muter2 googling nyarinya mentok disini, nyoba download script dari sini dan dicoba pun masih gagal dengan pesan error. Setelah sedikit modifikasi dan menambah file dari PHPmailer akhirnya bisa juga menggunakan scriptnya dengan SMTP Gmail 🙂
boleh minta sedikit pencerahan ? soalnya masih Sorry, Mail Sent Error…, please try again.