Membaca Email dengan PHP


Email IMAP

Membaca Email dengan PHP

PHP memiliki fungsi untuk mengambil dan membaca email melalui internet protokol POP3 dan IMAP. Port yang kita gunakan untuk itu adalah 993 (IMAP SSL)
Fungsi-fungsi yang digunakan adalah:

imap_open($hostname,$username,$password);
imap_fetch_overview($mbox,”1:$MN”,0);
imap_header($mbox, $msg);

Coding berikut ini menampilkan semua email dari GMail Anda, seperti pada gambar di atas.

<!DOCTYPE html>
<html>
<head>
<title>Baca Email</title>
<style type="text/css">
#mytable {width:800px;border:1px #a9c6c9 solid;font:12px verdana,arial,sans-serif;color:#333333;}
#mytable td {padding:8px;}
#mytable tr:hover td {background:#a0a0a0;color:#ffffff;}
#mytable th {background-color:#000099;color:#ffffff;padding:8px; }
#mytable tr:nth-child(odd) {background-color:#c0c0c0;}
#mytable tr:nth-child(even) {background-color:#f0f0f0;}
</style>
<script type="text/javaScript">
function buka(url)
{newwindow = window.open(url, '_blank', "status=yes, height=300, width=400, resizeable=yes");}
</script>
</head>
<body>
<?php
$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail';
$username = 'your_email@gmail.com';
$password = 'your_gmail_password';
$mbox = imap_open($hostname,$username,$password) or die('Cannot connect to mail server: ' . imap_last_error());
$MC=imap_check($mbox);
$MN=$MC->Nmsgs;
$overview=imap_fetch_overview($mbox,"1:$MN",0);
$size=sizeof($overview);
echo "<h1>Baca Email</h1>
	<table id='mytable'>
	<tr><th>Msg_Id</th><th>From</th><th>Email</th><th>Date</th><th>Subject</th><th>Size</th></tr>";
for($i=$size-1;$i>=0;$i--)
{	$val=$overview[$i];
	$msg=$val->msgno;
	$date=date('Y-m-d H:i:s', strtotime($val->date));
	$subj=isset($val->subject)?$val->subject:"(no subject)";
	$header = imap_header($mbox, $msg);
	$from = $header->from;
	$email_size = $val->size;
	foreach ($from as $id => $object) 
	{	$fromname = isset($object->personal)?$object->personal:$object->mailbox;
		$fromaddress = $object->mailbox . "@" . $object->host;
	}
	echo "<tr onclick=\"buka('read_email.php?msgno=$msg&msgdate=$date&msgfrom=$fromname&msgemail=$fromaddress&msgsubj=$subj');\">
		<td>$msg</td> <td>$fromname</td> <td>$fromaddress</td> <td>$date</td> <td>$subj</td><td>$email_size</td></tr>";
}
echo "</table>";
imap_close($mbox);
?>
</body>
</html>

Anda dapat click baris pada table-nya untuk membaca isi email Anda pada window browser baru.

Berikut ini coding untuk membaca isi email Anda

<?php
function get_mime_type(&$structure)
{   $primary_mime_type = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");
    if($structure->subtype) {return $primary_mime_type[(int) $structure->type] . '/' . $structure->subtype;}
    return "TEXT/PLAIN";
}
function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false)
{   if (!$structure) {$structure = imap_fetchstructure($stream, $msg_number);}
    if($structure)
    {   if($mime_type == get_mime_type($structure))
        {   if(!$part_number) {$part_number = "1";}
            $text = imap_fetchbody($stream, $msg_number, $part_number);
            if($structure->encoding == 3) {return imap_base64($text);}
			else if ($structure->encoding == 4) {return imap_qprint($text);}
			else {return $text;}
        }
        if ($structure->type == 1) /* multipart */
        {   while (list($index, $sub_structure) = each($structure->parts))
            {   if ($part_number) {$prefix = $part_number . '.';}
                $data = get_part($stream, $msg_number, $mime_type, $sub_structure, $prefix . ($index + 1));
                if ($data) {return $data;}
            }
        }
    }
    return false;
}
$msg_number = $_GET['msgno'];
$msg_from = $_GET['msgfrom'];
$msg_email = $_GET['msgemail'];
$msg_date = $_GET['msgdate'];
$msg_subject = $_GET['msgsubj'];
$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail';
$username = 'your_email@gmail.com';
$password = 'your_gmail_password';
$stream = imap_open($hostname,$username,$password) or die('Cannot connect to mail server: ' . imap_last_error());
$isiemail = get_part($stream, $msg_number, "TEXT/HTML");
echo "<h2>$msg_subject</h2>
	  From: $msg_from ($msg_email) <br />
	  Date: $msg_date<br/>
	  <hr />
	  $isiemail";
?> 

Selamat mencoba, semoga sukses.

Leave your comment