Cara kirim email dengan PHP

Langsung saja, kadang website yang kita bangun membutuhkan fungsi untuk mengirim email. Misalkan email untuk memverifikasi pendaftaran, lost password, atau mengirim artikel terbaru ke user. PHP mempunyai fungsi mengirim email mail(). Sayannya, fungsi ini tidak bisa bejalan di Windows meningat windows tidak punya mail server.

Untuk mengatasi cara diatas, anda bisa menginstall mail server lokal seperti Argosoft mail server atau meletakannya di webhosting. Kedua cara tersebut cukup ribet. Saya akan mengajarkan cara sederhana mengirim email dengan memanfaatkan Server Gmail dan akun yang kita punya disana. Kelebihan teknik ini lebih sederhana, email yang kita kirim akan masuk INBOX, bukan masuk folder spam.

Pada praktik ini saya asumsikan anda memakai Windows dengan Server XAMPP. Saya sendiri memakai XAMPP 1.7.4. Ada dua langkah utama yaitu seting XAMPP agar bisa mengirim email dan membuat script kirim email itu sendiri.

Seting XAMPP

Seting XAMPP terbagi menjadi dua yaitu menginstall paket mail.php dari pear.net.php dan menambahkan support SSL ke php.ini.

Install paket mail.php

Buka command prompt dan pastikan anda didrektori C:\XAMPP\php ,jalankan perintah berikut

pear channel-update pear.php.net
pear install mail

Menambahkan support SSL ke PHP

Buka file php.ini XAMPP\php\php.ini pada bagian Windows Extentions (sekitar baris 950), tambahkan kode

extension=php_openssl.dll

Setelah itu restart Apache web server lalu buka http://localhost, Klik menu phpinfo().
pastikan pada bagian Registered Stream Socket Transports ada tambahan dukungan SSL seperti ini

tcp, udp, ssl, sslv3, sslv2, tls

Buat skript Kirim email

Script untuk kirim emailnya adalah sebagai berikut :

require_once "Mail.php";
$subject = "Test mail PHP";
	$body = "Test email dengan PHP dan GMAIL !!!";
	//mail($to, $subject, $body,$headers);
	//ganti baris ini dengan email yang dituju 
	$to = "email_yang_dituju@domain.com";
//ganti dengan emailmu /email resmi website
	$from = "emailmu_di_gmail@gmail.com";
	$host = "ssl://smtp.gmail.com";
	$port = "465";
	//emailmu untuk login k gmail 
	$username = "emailmu@gmail.com";
	
	//passwordmu waktu login gmail
	$password = "passwordmu";

$headers = array('From' => $from, 'To' => $to, 
'Subject' => $subject);
$smtp = Mail::factory('smtp', array('host' => $host,
 'port' => $port, 'auth' => true,
 'username' => $username, 'password' => $password));

	$mail = $smtp -> send($to, $headers, $body);

if (PEAR::isError($mail)) {
echo("<p> Email Gagal dikirim" . $mail -> getMessage() . "</p>");
}else{
echo "Email berhasil di kirim ";
}

What next?

contoh diatas hanyalah script sederhana untuk mengirim email. Anda bisa mengintegrasikan dengan script untuk mereset password, untuk memverifikasi email saat pendaftaran user, notifikasi pada ecommerce dan sebagainya, semua tinggal disesuaikan denan kebutuhan web yang sedang anda buat. Selamat mencoba!.

Tutorial Datagrid berbasis Ajax

Salah satu fitur utama dalam aplikasi pengolahan berbasis web adalah melakukan operasi tampil,tambah,edit dan hapus data. Banyak tutorial yang mengajarkan cara melakukan operasi tersebut dengan metode biasa. Kali ini, saya akan menjelaskan teknik melakukan operasi pengolahan data menggunakan PHP, MySQL, jQuery dan library JeasyUI yang akan membuat halaman pengolahan data anda lebih menarik sekaligus responsive karena teknik ini sudah mengunakan ajax.

Tampilan Pengolahan data web dengan datagrid php dan ajax
Tampilan Pengolahan data web dengan datagrid php dan ajax

Langkah pembuatannya
1. Buat tabel
2. Buat file koneksi
3. Buat halaman Front end (Tabel dan Form )
4. Buat fungsi new_user(), save_user(), edit_user(), save_user().
5. Buat file php untuk melakukan operasi data tambah,edit,hapus dan tampil data.

buat tabel

Contoh kali ini, kita akan membuat pengolahan data mahasiswa, berikut ini struktur tabelnya

CREATE TABLE IF NOT EXISTS `mahasiswa` (
  `nim` varchar(5) NOT NULL,
  `nama` varchar(40) NOT NULL,
  `ipk` double NOT NULL,
  `jurusan` varchar(40) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

File koneksi database

Sesuaikan konfigurasi ini dengan database yang anda pakai. Namai file ini dengan nama config.php.

mysql_connect('localhost','usermysql','password');
	mysql_select_db('namadatabase');

Halaman Front end

Halaman ini berisi form dan tabel untuk menampilkan data.

	<table id="dg" title="My mahasiswa" class="easyui-datagrid" 
style="width:700px;height:250px"
		url="mahasiswa_crud.php?aksi=show"
		toolbar="#toolbar" pagination="true"
		rownumbers="true" fitColumns="true" singleSelect="true">
			<thead>
				<tr>
					<th field="nim" width="50">Nim</th>
					<th field="nama" width="50">nama </th>
					<th field="ipk" width="50">ipk</th>
					<th field="jurusan" width="50">jurusan</th>
				</tr>
			</thead>
		</table>
		<div id="toolbar">
			<a href="#" class="easyui-linkbutton" iconCls="icon-add" 
plain="true" onclick="newUser()">New User</a>
			<a href="#" class="easyui-linkbutton" iconCls="icon-edit" 
plain="true" onclick="editUser()">Edit User</a>
			<a href="#" class="easyui-linkbutton" iconCls="icon-remove" 
plain="true" onclick="removeUser()">Remove User</a>
		</div>

		<div id="dlg" class="easyui-dialog" 
style="width:400px;height:280px;padding:10px 20px"
		closed="true" buttons="#dlg-buttons">
			<div class="ftitle">
				Info Mahasiswa
			</div>
			<form id="fm" method="post" novalidate>
				<div class="fitem">
					<label>Nim:</label>
					<input name="nim" class="easyui-validatebox" required="true">
				</div>
				<div class="fitem">
					<label>Nama:</label>
					<input name="nama" class="easyui-validatebox" required="true">
				</div>
				<div class="fitem">
					<label>ipk:</label>
					<input name="ipk">
				</div>
				<div class="fitem">
					<label>jurusan:</label>
					<input name="jurusan" class="easyui-validatebox" >
				</div>
			</form>
		</div>
		<div id="dlg-buttons">
			<a href="#" class="easyui-linkbutton" iconCls="icon-ok" 
onclick="saveUser()">Save</a>
			<a href="#" class="easyui-linkbutton" iconCls="icon-cancel" 
onclick="javascript:$('#dlg').dialog('close')">Cancel</a>
		</div>

fungsi javascript crud ajax

	var url;
			function newUser() {
				$('#dlg').dialog('open').dialog('setTitle', 'Tambah User');
				$('#fm').form('clear');
				url = 'mahasiswa_crud.php?aksi=add';
			}

			function editUser() {
				var row = $('#dg').datagrid('getSelected');
				if (row) {
					$('#dlg').dialog('open').dialog('setTitle', 'Ubah User');
					$('#fm').form('load', row);
					url = 'mahasiswa_crud.php?aksi=edit&id=' + row.nim;
				}
				console.log(url);
			}

			function saveUser() {
				$('#fm').form('submit', {
					url : url,
					onSubmit : function() {
						return $(this).form('validate');
					},
					success : function(result) {
						var result = eval('(' + result + ')');
						if (result.success) {
							$('#dlg').dialog('close');
							// close the dialog
							$('#dg').datagrid('reload');
							// reload the user data
						} else {
							$.messager.show({
								title : 'Error',
								msg : result.msg
							});
						}
					}
				});
			}

			function removeUser() {
				var row = $('#dg').datagrid('getSelected');
				console.log(row);
				
				if (row) {
					$.messager.confirm('Confirm', 
'Yakin Mau menghapus data user?', function(r) {
						if (r) {
							$.post('mahasiswa_crud.php?aksi=hapus', {
								id : row.nim
							}, function(result) {
								if (result.success) {
									$('#dg').datagrid('reload');
									// reload the user data
								} else {
									$.messager.show({// show error message
										title : 'Error',
										msg : result.msg
									});
								}
							}, 'json');
						}
					});
				}
			}

php untuk melakukan operasi crud

namai file ini dengan nama mahasiswa_crud.php


include 'config.php';

$id = $_REQUEST['id'];
$nim = $_REQUEST['nim'];
$nama = $_REQUEST['nama'];
$ipk = $_REQUEST['ipk'];
$jurusan = $_REQUEST['jurusan'];
$aksi = $_REQUEST['aksi'];

switch($aksi) {

	case 'show' :
		{

			//get user
			$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
			$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
			$offset = ($page - 1) * $rows;
			$result = array();

			$rs = mysql_query("select count(*) from mahasiswa");
			$row = mysql_fetch_row($rs);
			$result["total"] = $row[0];
			$rs = mysql_query("select * from mahasiswa limit $offset,$rows");

			$items = array();
			while ($row = mysql_fetch_object($rs)) {
				array_push($items, $row);
			}
			$result["rows"] = $items;

			echo json_encode($result);

		}
		break;
	case 'add' :
		{
			//save user

			$sql = "insert into mahasiswa(nim,nama,ipk,jurusan) 
			values('$nim','$nama','$ipk','$jurusan')";
			$result = @mysql_query($sql);
			if ($result) {
				echo json_encode(array('success' => true));
			} else {
				echo json_encode(array('msg' => 'Terjadi kesalahan .'));
			}
		}//end of save
		break;
		
	case 'edit' :
		{
			//update user

			$sql = "update mahasiswa set nim='$nim',nama='$nama',
			ipk='$ipk',jurusan='$jurusan' where nim='$id'";
			$result = @mysql_query($sql);
			if ($result) {
				echo json_encode(array('success' => true));
			} else {
				echo json_encode(array('msg' => 'Terjadi kesalahan .'));
			}
		}
		break;

	case 'hapus' : {
		//remove user ;

		$sql = "delete from mahasiswa where nim='$id'";
		$result = @mysql_query($sql);
		if ($result) {
			echo json_encode(array('success' => true));
		} else {
			echo json_encode(array('msg' => 'Terjadi kesalahan .'));
		}
	}
}//end of switch

Demo dan source code

Mau mencobanya langsung? klik disini, mau mendapatkan source codenya? klik disini.