Cara menggunakan phpmailer dengan SMTP berikut attachment

This item was filled under [ Code Snippet, Javascript, PHP ]

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:

<?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

<?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, 3,232 hits)

(sudah termasuk class phpmailer dan contoh file)

Tambahan fungsi format_size sbb.:

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.

Rate this topic:
1 Star2 Stars3 Stars4 Stars5 Stars (10 votes, average: 4.80 out of 5)
Loading ... Loading ...
Popularity: 9,674 views
Tagged with: [ , , ]
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Artikel Sejenis

31 Comments on “Cara menggunakan phpmailer dengan SMTP berikut attachment”

  • Kazuya
    Mozilla Firefox Mozilla Firefox 3.0.3
    Windows Windows XP
    12 Nov 2008 2:47

    makasih bro…
    gw coba2 dulu ya…

    Like or Dislike: Thumb up 0 Thumb down 0
  • fa
    Mozilla Firefox Mozilla Firefox 3.0.3
    Windows Windows XP
    12 Nov 2008 2:57

    ok ini yg dicari2 neh… tq ya

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.0.8
    Windows Windows XP
    11 Apr 2009 7:07

    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

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.0.8
    Windows Windows XP
    13 Apr 2009 20:52

    mas Erik,
    saya lupa masukkan fungsi format_size.
    ini fungsinya:

    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'; 
    }

    Terimakasih atas komentarnya :)

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 1.5.0.4
    Windows Windows XP
    13 May 2009 17:00

    setelah googling2 sampe capek.
    akhirnya… artikel ini banyak membantu.
    aku coba udah oke.
    thanks banget..

    Like or Dislike: Thumb up 0 Thumb down 0
  • Google Chrome Google Chrome 2.0.172.39
    Windows Windows XP
    5 Aug 2009 11:53

    terima kasih banyak ya.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.5.3
    Windows Windows Vista
    31 Oct 2009 11:40

    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.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.5.4
    Windows Windows XP
    31 Oct 2009 22:31

    @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.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Edse
    Mozilla Firefox Mozilla Firefox 3.6.3
    Windows Windows XP
    5 Apr 2010 14:45

    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

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.3
    Windows Windows XP
    5 Apr 2010 19:46

    @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/

    Like or Dislike: Thumb up 0 Thumb down 0
  • Opera Opera 9.80
    Windows Windows XP
    20 Aug 2010 11:51

    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??

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.8
    Windows Windows XP
    20 Aug 2010 15:59

    Gina, coba perhatikan dan sesuaikan alamat include nya dgn penempatan dimana file2 itu berada:

    require_once ('lokasi-folder-yg-tepat/class.smtp.php');
    require_once ('lokasi-folder-yg-tepat/class.phpmailer.php');

    kalau posisinya sama, gak perlu kasih tanda “/” lagi, pada include nya, nah kalau “/” paling depan itu artinya dari root folder web nya.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Opera Opera 9.80
    Windows Windows XP
    23 Aug 2010 13:03

    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…

    Like or Dislike: Thumb up 0 Thumb down 0
  • ventha
    Mozilla Firefox Mozilla Firefox 3.0.19
    Windows Windows XP
    1 Sep 2010 10:02

    koq ga bs terkirim ya mas??

    Sorry, Mail Sent Error…, please try again.

    apanya yg error??

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.8
    Windows Windows XP
    2 Sep 2010 13:39

    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.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.8
    Windows Windows XP
    2 Sep 2010 14:25

    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 :D

    Like or Dislike: Thumb up 0 Thumb down 0
  • agus
    Mozilla Firefox Mozilla Firefox 3.6.8
    Windows Windows XP
    15 Sep 2010 8:46

    mas saya masih bingung bagaimana menggunakan php mailer nya…??? masih bingung yg mau d konfigurasi..thanks

    Like or Dislike: Thumb up 0 Thumb down 0
  • mis3
    Google Chrome Google Chrome 6.0.472.63
    Windows Windows XP
    8 Oct 2010 15:14

    Sorry, Mail Sent Error…, please try again.

    itu kenapa yah mas..?
    thx b4

    Like or Dislike: Thumb up 0 Thumb down 0
  • Google Chrome Google Chrome 8.0.552.0
    Windows Windows 7
    5 Nov 2010 0:20

    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 ,

    Like or Dislike: Thumb up 0 Thumb down 0
  • Google Chrome Google Chrome 6.0.472.63
    Windows Windows XP
    3 Dec 2010 11:04

    saya coba kok erorr ya,, apa ada yang kurang ya seting nya,,
    mohon infonya..
    terimaksih

    Like or Dislike: Thumb up 0 Thumb down 0
  • sashy
    Mozilla Firefox Mozilla Firefox 3.6.3
    Windows Windows 7
    30 Jan 2011 7:44

    fungsi funcion format size nya di taruh sebelah mananya??

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.8
    Windows Windows XP
    30 Jan 2011 13:01

    @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.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.16
    Windows Windows 7
    29 Apr 2011 9:55

    thanks gan sudah bisa.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Google Chrome Google Chrome 12.0.742.122
    Windows Windows XP
    29 Jul 2011 10:34
    $tujuan = 'abc@ymail;123@ymail.com';
    $cctujuan = 'xyz@ymail.com;ccc@ymail.com";
    $objsubj = 'subject testing';   
    $objmess = 'coba send multi tujuan multi cc';            
     
                   $mail->ClearAddresses();
                   if(preg_match("/;/",$tujuan)){
                       $tujuan = explode(';',$tujuan);
                       foreach ($tujuan as $key =>$value){
                          $mail->AddAddress($value,$value);
                       }
                   }else{
                         $mail->AddAddress($tujuan,$tujuan);
                   }
     
                   $cctujuan1 = explode(';',$cctujuan);
                   if (count($cctujuan1) > 1) {
                     foreach ($cctujuan1 as $key =>$value){
                        $mail->AddCC($value,$value);
                     }
                   } else {
                      $mail->AddCC($cctujuan, $cctujuan);
                   }
     
     
                   $mail->From = 'server@server.com';
                   $mail->FromName = 'server mail test';
                   $mail->Subject = $objsubj;
                   $mail->Body = $objmess;
                   //$mail->AddAttachment($folderfile, $files_);
                   if ($mail->Send()) {
                       echo "sukses.";
                   } else {
                       echo "gagal.";
                   }

    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

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 5.0
    Windows Windows XP
    30 Jul 2011 7:14

    @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.

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 5.0
    Windows Windows XP
    18 Aug 2011 11:40

    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…..

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 6.0
    Windows Windows XP
    18 Aug 2011 20:03

    @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:

    Subject: “Undelivered Mail Returned to Sender”
    Message:
    I’m sorry to have to inform you that your message could not
    be delivered to one or more recipients. It’s attached below.

    For further assistance, please send mail to postmaster.

    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.

    The mail system

    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.

    Like or Dislike: Thumb up 0 Thumb down 0
  • cikung
    Mozilla Firefox Mozilla Firefox 8.0
    Windows Windows 7
    3 Jan 2012 1:39

    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… :{

    Like or Dislike: Thumb up 0 Thumb down 0
  • cyt
    Google Chrome Google Chrome 17.0.963.56
    Windows Windows XP
    1 Mar 2012 13:08

    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..

    Like or Dislike: Thumb up 0 Thumb down 0

Trackbacks

  1. Cara konfigurasi phpmailer menggunakan Gmail Account | NSI
  2. Cara Setting Email Pop3 dan SMTP dari cPanel | www.ganisda2001.com

Leave a Comment

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Halaman ini di eksekusi dalam waktu 2.762 detik! (mayan lah segini mah...)