php email parser?

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
is there some prewritten PHP code or any way to do this:

basically i will create a new pop account on my server. what i want is some automatic way of downloading the emails from the account, and carrying out some functions with the attachments.

to put it into context:

think pics.bbzzdd.com. imagine an email address upload@pics.bbzzdd.com. the server will automatically download all emails sent to the address, and import the images into the user that is associated with the email addresses account.

it is complicated. and i'm sure there's no code out there that'll do 100% of what i want, but is there some starting point you guys can outline??
 

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
don't think there's java installed. no other ideas though huh...
 

AFB

Lifer
Jan 10, 2004
10,718
3
0
Originally posted by: zimu
don't think there's java installed. no other ideas though huh...

PHP can do sockets, right? I think that is your only option.
 

Kilrsat

Golden Member
Jul 16, 2001
1,072
0
0
PHP has libraries for both POP3 and IMAP email checking. Example: Squirrelmail is PHP doing IMAP.

The problem is, you need some way to trigger the checking of the email or else all the mail just sits in the box.
 

mugs

Lifer
Apr 29, 2003
48,924
45
91
Originally posted by: Kilrsat
PHP has libraries for both POP3 and IMAP email checking. Example: Squirrelmail is PHP doing IMAP.

The problem is, you need some way to trigger the checking of the email or else all the mail just sits in the box.

cron job
 

Kilrsat

Golden Member
Jul 16, 2001
1,072
0
0
Originally posted by: mugs
Originally posted by: Kilrsat
PHP has libraries for both POP3 and IMAP email checking. Example: Squirrelmail is PHP doing IMAP.

The problem is, you need some way to trigger the checking of the email or else all the mail just sits in the box.

cron job
If you're going to use a cron job, then you might as well do it in a language that's slightly more efficient than PHP. If the scale is similar to bbzzdd.com then you're looking at 1000+ users, and if you want the emailed pics to show up in a timely fashion you're running the cron job every 1-5minutes. So checking 1000+ mailboxes, decoding the attachments, moving them to the correct folders, setting correct permissions on the new files, etc. That type of operation isn't really playing at PHPs strengths.
 

mugs

Lifer
Apr 29, 2003
48,924
45
91
Originally posted by: Kilrsat
Originally posted by: mugs
Originally posted by: Kilrsat
PHP has libraries for both POP3 and IMAP email checking. Example: Squirrelmail is PHP doing IMAP.

The problem is, you need some way to trigger the checking of the email or else all the mail just sits in the box.

cron job
If you're going to use a cron job, then you might as well do it in a language that's slightly more efficient than PHP. If the scale is similar to bbzzdd.com then you're looking at 1000+ users, and if you want the emailed pics to show up in a timely fashion you're running the cron job every 1-5minutes. So checking 1000+ mailboxes, decoding the attachments, moving them to the correct folders, setting correct permissions on the new files, etc. That type of operation isn't really playing at PHPs strengths.

I don't think his hosting provider is going to want him to be running any kind of program that checks 1000 e-mail addresses every 1-5 minutes, no matter what language he wrote it in. Zimu, why do you want to do this via e-mail?
 

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
Originally posted by: mugs
Originally posted by: Kilrsat
Originally posted by: mugs
Originally posted by: Kilrsat
PHP has libraries for both POP3 and IMAP email checking. Example: Squirrelmail is PHP doing IMAP.

The problem is, you need some way to trigger the checking of the email or else all the mail just sits in the box.

cron job
If you're going to use a cron job, then you might as well do it in a language that's slightly more efficient than PHP. If the scale is similar to bbzzdd.com then you're looking at 1000+ users, and if you want the emailed pics to show up in a timely fashion you're running the cron job every 1-5minutes. So checking 1000+ mailboxes, decoding the attachments, moving them to the correct folders, setting correct permissions on the new files, etc. That type of operation isn't really playing at PHPs strengths.

I don't think his hosting provider is going to want him to be running any kind of program that checks 1000 e-mail addresses every 1-5 minutes, no matter what language he wrote it in. Zimu, why do you want to do this via e-mail?

well couple of things:
1. i could use cron jobs, thats what i had in mind. however need the script to run!
2. not at all the scale of pics.bbzzdd. my system is more for the people in my ISP's forum, so we're talking about 50 users max probably. number of pictures etc? maybe 1/100th the activity of pics.bb.
3. wouldn't need to check 1000+ mailboxes. wouldn't even have to do 50+ mailboxes. just one mailbox remember? cause it'll decode the messages in that one single mailbox, and import the picture into the database, matching the email fields.
4. why do this? basically uploads from my ISP (in pakistan) are real crap and inconsistent. however, our SMTP server is on our network, hence we have a (relatively) fast upload speed via email of 1.5MBit. would save eons of time if i enabled an email attachment system.

sorry for the delay; i was sleeping! (time difference = EST + 9 hours!)
 

AFB

Lifer
Jan 10, 2004
10,718
3
0
Originally posted by: zimu
Originally posted by: mugs
Originally posted by: Kilrsat
Originally posted by: mugs
Originally posted by: Kilrsat
PHP has libraries for both POP3 and IMAP email checking. Example: Squirrelmail is PHP doing IMAP.

The problem is, you need some way to trigger the checking of the email or else all the mail just sits in the box.

cron job
If you're going to use a cron job, then you might as well do it in a language that's slightly more efficient than PHP. If the scale is similar to bbzzdd.com then you're looking at 1000+ users, and if you want the emailed pics to show up in a timely fashion you're running the cron job every 1-5minutes. So checking 1000+ mailboxes, decoding the attachments, moving them to the correct folders, setting correct permissions on the new files, etc. That type of operation isn't really playing at PHPs strengths.

I don't think his hosting provider is going to want him to be running any kind of program that checks 1000 e-mail addresses every 1-5 minutes, no matter what language he wrote it in. Zimu, why do you want to do this via e-mail?

well couple of things:
1. i could use cron jobs, thats what i had in mind. however need the script to run!
2. not at all the scale of pics.bbzzdd. my system is more for the people in my ISP's forum, so we're talking about 50 users max probably. number of pictures etc? maybe 1/100th the activity of pics.bb.
3. wouldn't need to check 1000+ mailboxes. wouldn't even have to do 50+ mailboxes. just one mailbox remember? cause it'll decode the messages in that one single mailbox, and import the picture into the database, matching the email fields.
4. why do this? basically uploads from my ISP (in pakistan) are real crap and inconsistent. however, our SMTP server is on our network, hence we have a (relatively) fast upload speed via email of 1.5MBit. would save eons of time if i enabled an email attachment system.

sorry for the delay; i was sleeping! (time difference = EST + 9 hours!)

Wait a minute. You have access to the mail server? Just make a custom upload script (Authiticate the hell out of it) that another program can upload a file to and have the program run on a spare computer that checks the mail server written in whatever web enabled language you want.

Example

1)Bill sends message to pics@site.com
2)Mail server receives message
3)It comes time for the mover program to do it's job again
4)Mover program checks mail server and notices there is a picture for it
5)Mover program retieves the picture with the information it needs
6)Mover contacts your custom PHP upload script on the webvsite(should be hidden and authiticated) and uploads the file along with the information
7) File is now uploaded to the website




 

Kilrsat

Golden Member
Jul 16, 2001
1,072
0
0
Originally posted by: zimu
well couple of things:
1. i could use cron jobs, thats what i had in mind. however need the script to run!
2. not at all the scale of pics.bbzzdd. my system is more for the people in my ISP's forum, so we're talking about 50 users max probably. number of pictures etc? maybe 1/100th the activity of pics.bb.
3. wouldn't need to check 1000+ mailboxes. wouldn't even have to do 50+ mailboxes. just one mailbox remember? cause it'll decode the messages in that one single mailbox, and import the picture into the database, matching the email fields.
4. why do this? basically uploads from my ISP (in pakistan) are real crap and inconsistent. however, our SMTP server is on our network, hence we have a (relatively) fast upload speed via email of 1.5MBit. would save eons of time if i enabled an email attachment system.

So you want to use your ISPs SMTP server to send a message to your web host's SMTP server, and from there have some kind of program checking the mail box and moving it into the web accessible area?

Checking only the sent address wouldn't be a very good idea. Sender addresses are easily forged and if it just starts bringing over the attachments blindly, it would be a nice way to end up with your web server being compromised or turned into a porn distribution center. That's the big hangup here, no authentication.

Perhaps instead of auto-fetching, you create a nice little administration front end where you "ok" the images waiting to be put up for the web? Then all the ok'd messages are moved in one big batch.


PHP Mail Stuff:
PHP E-mail functions

PHP fetching info (has some info about attachments in the user comments):
FetchBody docs

 

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
i understand the need for authentication. but to be perfectly honest i don't think such an airtight system would be necessary given my user base.

HOWEVER, here's what i was thinking. each image uploaded via email could simply have a flag- set as 1 or 0. 1 means file is verified, 0 means its not yet been verified. when someone emails the system a message with attachments, it uploads the images but flags them with 0. the system would then REPLY to the email address provided, saying that in order to confirm your identity, please click this link. link will have some randomly generated code that will "activate" all the uploaded images.

the php notes you provided are awesome. but i know when i'm in way over my head and i think i am... this would take me months to figure out.

already have imap installed on the server, which is a start. i can create the new email account in a second. would you guys be interested in helping me out to develop this php file?? i guess i'm begging rather than "wondering if you're interested!!"

guess a good place to start would be to paste my code for the current web-based file upload. i think about 80% of the image processing functions etc can be lifted right from there....

i'll paste the code in a sec, in a new post.
 

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
<?
require "pics.php";
// this is just the config file for passwords etc


function is_valid_filename($filename)
{
return eregi('^[a-zA-Z0-9._-]+$', $filename);
}

function is_valid_type($type)
{
if($type == "image/gif" ||
$type == "image/jpeg" ||
$type == "image/pjpeg" ||
$type == "image/x-png" ||
$type == "image/png") return true;
else return false;
}

function is_zip_file($type)
{
return ($type == "application/zip" ||
$type == "application/x-zip" ||
$type == "application/x-zip-compressed");
}

function get_user_quota($user)
{
require "pics.php";

$connection = mysql_pconnect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

$query = "SELECT size FROM quota q, member m ";
$query .= "WHERE m.quota_key = q.quota_key ";
$query .= "AND BINARY m.username = '$user'";

$results = mysql_query($query);
$result = mysql_fetch_array($results);
$total = $result[0];

mysql_free_result($results);
mysql_close($connection);

return $total;
}

function get_used_space($user)
{
require "pics.php";

$connection = mysql_pconnect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

$query = "SELECT sum(p.filesize) as sum ";
$query .= "FROM picture p, member m ";
$query .= "WHERE BINARY username = '$user' ";
$query .= "AND m.member_key = p.member_key";
$results = mysql_query($query);

$result = mysql_fetch_array($results);
$total = $result[0];

mysql_free_result($results);
mysql_close($connection);

return $total;
}

function add_picture($member_key, $filename, $filesize, $size_x, $size_y)
{
require "pics.php";

$connection = mysql_pconnect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

$query = "INSERT into picture ";
$query .= "(member_key, filename, filesize, size_x, size_y, date_posted) ";
$query .= "VALUES ($member_key, '$filename', $filesize, $size_x, $size_y, now())";
mysql_query($query);

$query = "SELECT picture_key FROM picture ";
$query .= "WHERE member_key = $member_key ";
$query .= "AND BINARY filename = '$filename'";

$results = mysql_query($query);
$result = mysql_fetch_array($results);
$key = $result[0];

mysql_free_result($results);
mysql_close($connection);

return $key;
}

function create_tn($src, $dst, $type)
{
require "pics.php";

if($type == "image/jpeg" || $type == "image/pjpeg")
$src_img = imagecreatefromjpeg($src);
else if($type == "image/gif")
$src_img = imagecreatefromgif($src);
else if($type == "image/x-png")
$src_img = imagecreatefrompng($src);

$size = getimagesize($src);
$x = $size[0];
$y = $size[1];

$new_x = 0;
$new_y = 0;

if($x < $tn_aspect &amp;&amp; $y < $tn_aspect)
{
$new_x = $x;
$new_y = $y;
}
else
{
$ratio = $tn_aspect / $x;
if($y * $ratio > $tn_aspect)
$ratio = $tn_aspect / $y;

$new_x = $x * $ratio;
$new_y = $y * $ratio;
}

$dst_img = imagecreatetruecolor($new_x, $new_y);
imagecopyresized($dst_img, $src_img,
0, 0, 0, 0, $new_x, $new_y, $x, $y);

$index = (int)($dst / 100);
$dst_dir = "$tn_dir/$index";

if(!file_exists($dst_dir))
mkdir($dst_dir);

imagejpeg($dst_img, "$dst_dir/$dst.jpg", $tn_quality);
}

function get_tn_offset($index)
{
$offset = (int)($index / 100);
return $offset;
}

session_start();

$user = $_SESSION["user"];
$key = $_SESSION["key"];
$is_zip = false;
$zip_log = "";

if(!$user)
{
header("Location: index.php");
exit;
}

if(isset($_SESSION["quota_exceeded"]))
{
header("Location: home.php");
exit;
}




if(isset($_FILES['image']))
{
$file = $_FILES['image']['name'];

if(!$file)
{
header("Location: upload.php");
exit;
}

$tmpfile = $_FILES['image']['tmp_name'];
$fullpath = "$users_dir/$user/" . $_FILES['image']['name'];

if(is_zip_file($_FILES['image']['type']))

{
$is_zip = true;
$tmp_user_dir = "$work_dir/$user";
$command = "unzip -qoj $tmpfile -d $tmp_user_dir";

if(file_exists($tmp_user_dir))
exec("rm -rf $tmp_user_dir");

mkdir($tmp_user_dir);
exec($command);

$i = 0;
$d = dir($tmp_user_dir);

while (false != ($entry = $d->read()))
{
if($entry[0] != '.')
{
$fullpath = "$users_dir/$user/$entry";
$file = "$tmp_user_dir/$entry";
$type = exec("$mime_tool $file");

if(!is_valid_filename($entry))
{
$zip_log = $zip_log."Skipping file \"$entry\". Invalid filename.<br>";
}
else if(file_exists($fullpath))
{
$zip_log = $zip_log."<font color=\"red\">Skipping file \"$entry\". File with the same name exists in your account.</font><br>";
}
else if(is_valid_type($type))
{
copy($file, $fullpath);
$size = getimagesize($fullpath);
$size_x = $size[0];
$size_y = $size[1];
$pic_number = add_picture($key, $entry, filesize($fullpath), $size_x, $size_y);
create_tn($fullpath, $pic_number, $type);
$used = get_used_space($user);
$total = get_user_quota($user);

$link = "<a href=".$site_url."users/".$user."/".$entry.">$entry</a>";
$zip_log = $zip_log."File \"$link\" imported successfully.<br>";

if($total != -1 &amp;&amp; ($used >= $total))
{
$zip_log = $zip_log."<font color=\"red\">Processing stopped. Quota exceeded.</font><br>";
break;
}
}
else
$zip_log = $zip_log."<font color=\"red\">Skipping file: \"$entry\". Invalid file type.</font><br>";
}
}

exec("rm -rf $tmp_user_dir");
$success = true;
}
else if(!is_valid_filename($file))
{
$error = "Invalid filename. Must be alphanumeric. Underscores and dashes are ok.";
}
else if(file_exists($fullpath))
{
$error = "File already exists!";
}
else if(is_valid_type($_FILES['image']['type']) == false)
{
$error = "Invalid file type, rejected.";
}
else if(move_uploaded_file($_FILES['image']['tmp_name'], $fullpath))
{
$size = getimagesize($fullpath);
$size_x = $size[0];
$size_y = $size[1];

$pic_number = add_picture($key, $file, filesize($fullpath), $size_x, $size_y);
create_tn($fullpath, $pic_number, $_FILES['image']['type']);
$used = get_used_space($user);
$total = get_user_quota($user);

if($total - $used < 0)
$_SESSION["quota_exceeded"] = true;

$success = true;
}
}
?>

<html>
<head>
<title><?= $site_name ?> - Upload</title>
<link rel="stylesheet" href="pics.css" type="text/css">
</head>
<body>
<table cellspacing="0" cellpadding="10" width="100%" height="99%" border="1" bordercolor="#1144aa">
<tr height="4%">
<td colspan="2" bgcolor="#1144aa">
<? require "top_motd.php" ?>
</td>
</tr>
<tr>
<td width="20%" valign="top">
<? require "nav_user.php";
?>
<? require "nav_last5.php";
?>
</td>
<td valign="top">

<p>
Files must be in the image/gif (*.gif), image/jpeg (*.jpeg), image/pjpeg (*.jpg) or image/x-png (*.png) formats. You may however use any filename extension that you wish.
</p>
<p><b>You can also upload a zip file containing one or more images if you wish to upload multiple images at once, or reduce the size of your upload. The server will extract the images from the zip and import them into your
account. </b></p>

<form enctype="multipart/form-data" action="upload.php" method="POST">
<input class="formbttn" name="image" type="file"><br>
<input class="formbttn" type="submit" value="Upload"> <br><i><b>Please wait till upload completes, sometimes takes a while- otherwise you'll get a black image/thumbnail. If that happens, delete the file and try again</b></i>
</form>
<? if(isset($error))
{
?>
<div class="error"><?= $error ?></div>
<? }
?>

<? if(!isset($error) &amp;&amp; isset($success))
{
?>
<? $user = $_SESSION["user"];
?>
<? if($is_zip) { ?>
<?= $zip_log ?>
<? } else { ?>
<p><b>File <?= $file ?> uploaded.</b>
<p>
<table cellspacing="0" cellpadding="0" border="0">
<tr><td align="right"><b><?=number_format($total)?>&amp;nbsp;</b></td>
<td>bytes total.</td></tr>
<tr><td align="right"><b><?=number_format($used)?>&amp;nbsp;</b></td>
<td>bytes used.</td></tr>
<tr><td align="right"><b><?=number_format($total - $used)?>&amp;nbsp;</b>
</td><td>bytes free.</td></tr>
</table>
</p>
<p><b>URL:</b><br>
<a href="<?=$site_url?>users/<?=$user?>/<?=$file?>"><?=$site_url?>users/<?=$user?>/<?=$file?></a></p>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td colspan =2>&amp;nbsp;&amp;nbsp;&amp;nbsp;</td>
<td align="left" valign="bottom">
<a href="<?=$site_url?>users/<?=$user?>/<?=$file?>"><img src="<?=$site_url?>user/thumbs/<?=get_tn_offset($pic_number)?>/<?=$pic_number?>.jpg" border="0"></a>
</td>
</tr>
</table>
<? } ?>
<? }
?>
</td>
</tr>
</table>
</body>
</html>
 

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
SOME PROGRESS made...

Have programmed the following, which when run either results in a picture being shown on the screen (attached to an email I just sent to the newly created email account) OR an FTP error, which is the part I need help on see the comments in the php included below...

So here's the code:


----------------------------------------------------------

<?
foreach ($_GET as $k => $v)
{
$k = $v;
}
$login = '$login';
$password = '$password';
$host = '{localhost:110/pop3}';

$id=1;

$mbox = imap_open("$host", "$login", "$password");

$nummessages = imap_num_msg($mbox);

$strFileName = $att[$file]->parameters[0]->value;
$strFileType = strrev(substr(strrev($strFileName),0,4));
$fileContent = imap_fetchbody($mbox,$id,$file+2);
downloadFile($strFileType,$strFileName,$fileContent);

function downloadFile($strFileType,$strFileName,$fileContent) {


$ContentType = "application/octet-stream";

if ($strFileType == ".zip")
$ContentType = "application/zip";
if ($strFileType == ".gif")
$ContentType = "image/gif";
if ($strFileType == ".jpg" || $strFileType == "jpeg")
$ContentType = "image/jpeg";

header ("Content-Type: $ContentType");

// if i replace all the following with just "echo imap_base64($fileContent)"
// it will show just the image on the screen, as a JPG in this case.

$thefile = imap_base64($fileContent);


$conn_id = ftp_connect("$ftpserver");
$login_result = ftp_login($conn_id, "$ftpuser", "$ftppass");
ftp_pasv($conn_id, true);

$source_file = $thefile;
$destination_file = "testupload/" . $strFileName;

$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "File Upload Successful";
}
ftp_close($conn_id);

}
?>

---------------------------------

Cheers,
 

Modeps

Lifer
Oct 24, 2000
17,255
44
91
Originally posted by: mugs
I don't think his hosting provider is going to want him to be running any kind of program that checks 1000 e-mail addresses every 1-5 minutes, no matter what language he wrote it in. Zimu, why do you want to do this via e-mail?

I own the server pics is hosted on, and no, I dont want that happening There's no real reason to have it check a thousand email addresses. Like zimu said, one mailbox could be used... then when an image gets uploaded, the script will look at the from address and assign it to the specific user account. Of course, in doing this you'll have to already have that set by the user.

Process:
1) Normal user logs in and adds an email address that they will be emailing pictures from (i.e. a camera phone... myuser@tmobile.com)
2) Normal user emails photo to mailpics@bbzzdd.com
3) Script looks at the from address, searches through the DB of users for that address, then moves it to the proper user's folder. If for some reason the email address isnt in the database, the email (and photo) is deleted.

How to do it? I have no idea, but looks like you've got your starting point.
 

zimu

Diamond Member
Jun 15, 2001
6,210
0
0
modeps algorithm is exactly right. in a little more detail:

1. normal user logs on, adds email address they are using
2. normal user emails photo or ZIP file to mailpics@whatever.com
3. script takes from address, compares to users table in DB, adds pics to user account and generates thumbnails, but doesn't input the pictures into the database yet (i.e. they're not displayed yet)- it puts them into a "pendingpics" table in the database, with all the necessary info.
4. system sends email to user, saying the following pics are now on the server, however you need to click the following link to verify that you sent these pics in.
5. user clicks link. link will run a different script (this part is easy) which will just move the data from the pendingimages table to the actual images table, so making it visible.
6. if link has not been clicked in x number of days, when script is run it'll delete the old data in pendingimages table and delete the uploaded images and thumbnails.


sounds freakin' ingenious. right?

nows the hard part. algorithm -> pseudocode -> functional program...

come on AT! lets make miracles! i'm sure the owners of pics.bbzzdd.com would love to have this script too if/when we get it working?
 

mugs

Lifer
Apr 29, 2003
48,924
45
91
Originally posted by: Modeps

Process:
1) Normal user logs in and adds an email address that they will be emailing pictures from (i.e. a camera phone... myuser@tmobile.com)
2) Normal user emails photo to mailpics@bbzzdd.com
3) Script looks at the from address, searches through the DB of users for that address, then moves it to the proper user's folder. If for some reason the email address isnt in the database, the email (and photo) is deleted.

How to do it? I have no idea, but looks like you've got your starting point.

The way he described it in the OP it sounded like each account got its own address. My bad. In that case, it's not very difficult to do with PHP. Just realize that it's not difficult to spoof the From address on an e-mail.
 

junthin

Diamond Member
Jul 21, 2000
4,132
0
0
Any improvements on this project? Just curious if you were still using PHP for the final project.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |