Nusansifor

Nusantara Sistem Informasi

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:

<?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, 4,157 hits, Updated: 14 April 2011)

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

p5rn7vb

, ,

32 Comments

  • Kazuya says:

    Using Mozilla Firefox Mozilla Firefox 3.0.3 on Windows Windows XP

    makasih bro…
    gw coba2 dulu ya…

    Thumb up 0 Thumb down 0

  • fa says:

    Using Mozilla Firefox Mozilla Firefox 3.0.3 on Windows Windows XP

    ok ini yg dicari2 neh… tq ya

    Thumb up 0 Thumb down 0

  • erik says:

    Using Mozilla Firefox Mozilla Firefox 3.0.8 on Windows Windows XP

    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

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 3.0.8 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • iin says:

    Using Mozilla Firefox Mozilla Firefox 1.5.0.4 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • gunadi says:

    Using Google Chrome Google Chrome 2.0.172.39 on Windows Windows XP

    terima kasih banyak ya.

    Thumb up 0 Thumb down 0

  • Trisa says:

    Using Mozilla Firefox Mozilla Firefox 3.5.3 on Windows Windows Vista

    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.

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 3.5.4 on Windows Windows XP

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

    Thumb up 0 Thumb down 0


  • Using WordPress WordPress 2.6.5

    [...] SejenisCara menggunakan phpmailer dengan SMTP berikut attachmentDate format ‘xx time ago’Terbilang ejaan angka kedalam bentuk kalimatPHP Class [...]

    Thumb up 0 Thumb down 0

  • Edse says:

    Using Mozilla Firefox Mozilla Firefox 3.6.3 on Windows Windows XP

    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

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 3.6.3 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • gina says:

    Using Opera Opera 9.80 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 3.6.8 on Windows Windows XP

    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.

    Thumb up 0 Thumb down 0

  • gina says:

    Using Opera Opera 9.80 on Windows Windows XP

    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…

    Thumb up 0 Thumb down 0

  • ventha says:

    Using Mozilla Firefox Mozilla Firefox 3.0.19 on Windows Windows XP

    koq ga bs terkirim ya mas??

    Sorry, Mail Sent Error…, please try again.

    apanya yg error??

    Thumb up 0 Thumb down 0

  • kaze says:

    Using Mozilla Firefox Mozilla Firefox 3.6.8 on Windows Windows XP

    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.

    Thumb up 0 Thumb down 0

  • kaze says:

    Using Mozilla Firefox Mozilla Firefox 3.6.8 on Windows Windows XP

    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

    Thumb up 0 Thumb down 0

  • agus says:

    Using Mozilla Firefox Mozilla Firefox 3.6.8 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • mis3 says:

    Using Google Chrome Google Chrome 6.0.472.63 on Windows Windows XP

    Sorry, Mail Sent Error…, please try again.

    itu kenapa yah mas..?
    thx b4

    Thumb up 0 Thumb down 0

  • Abah petir says:

    Using Google Chrome Google Chrome 8.0.552.0 on Windows Windows 7

    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 ,

    Thumb up 0 Thumb down 0

  • muslim says:

    Using Google Chrome Google Chrome 6.0.472.63 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • sashy says:

    Using Mozilla Firefox Mozilla Firefox 3.6.3 on Windows Windows 7

    fungsi funcion format size nya di taruh sebelah mananya??

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 3.6.8 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • indra says:

    Using Mozilla Firefox Mozilla Firefox 3.6.16 on Windows Windows 7

    thanks gan sudah bisa.

    Thumb up 0 Thumb down 0


  • Using WordPress WordPress 3.1.3

    [...] mengirim email menggunakan phpmailer dengan mudah. berikut struktur folder dan file yg akan kita Read More [...]

    Thumb up 0 Thumb down 0


  • Using Google Chrome Google Chrome 12.0.742.122 on Windows Windows XP
    $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

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 5.0 on Windows Windows XP

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

    Thumb up 0 Thumb down 0


  • Using Mozilla Firefox Mozilla Firefox 5.0 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • Jawaad says:

    Using Mozilla Firefox Mozilla Firefox 6.0 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • cikung says:

    Using Mozilla Firefox Mozilla Firefox 8.0 on Windows Windows 7

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

    Thumb up 0 Thumb down 0

  • cyt says:

    Using Google Chrome Google Chrome 17.0.963.56 on Windows Windows XP

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

    Thumb up 0 Thumb down 0

  • nick says:

    Using Google Chrome Google Chrome 18.0.1025.168 on Windows Windows 7

    senasib berarti…
    pesan error “Sorry, Mail Sent Error…, please try again”
    gimana cara ngakalinnya ya :???:

    Thumb up 0 Thumb down 0

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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