-
July 29th, 2005, 09:38 PM
#1
Reading Email with PHP
Hey am working on a script and have hit a bit of a wall. I want to be able to update pages simply by sending an email to a specified POP enabled account (like gmail)
But have been unable to find any tutorials on how to accomplish this - the only thing that seems to come close is :
http://www.phpbuilder.com/columns/musone19990207.php3
but as this seems to require the installation of an imap server on the machine you want to run the script on (and I am writing the script for use on my remotely hosted account not my local dev server) so this solution is not suitable.
Has anyone came across any tutorials on this or can they point me at least in the right direction....I've tried searching but I guess am not using the correct terms as nothing is coming up
thanks
v_Ln
-
July 31st, 2005, 07:20 PM
#2
Hi
I simply love php with its boundless possibilities
They way to accomplish your request is by using
the php-imap facility[1], the same as mentioned
in the article you linked. It does allow you to talk
POP3 as well! Note, there is no need for an IMAP server,
the library simply has to be loaded. The php manual[2] is
quite descriptive. If you cannot use this (see below
section configuration), check out this POP3-class based
on sockets[3] (in german, but the script is self-explaining.
I have not tested it, however!).
But since I already do, what you want to do, here a
short excerpt of some script of mine.
Code:
<?php
if (!extension_loaded('imap'))
exit("php_imap.dll not loaded!");
else
echo "php_imap.dll loaded!<br><br>\n";
$mbox=@imap_open("{pop3server/pop3:110}INBOX","username","password");
if ($mbox==NULL)
exit("Could not connect!");
echo "Number of Mails: ".@imap_num_msg($mbox)."<br><br><hr><br><br>\n";
for ($i = 1; $i <= @imap_num_msg($mbox); $i++)
{
$header = @imap_headerinfo($mbox, $i,80,80);
echo "From: ".$header->from[0]->mailbox."@".$header->from[0]->host."<br>\n";
echo "Subject: ".$header->fetchsubject."<br>\n";
$body = @imap_body($mbox, $i);
echo $body."<br><br>\n<hr width=\"50%\"><br><br>\n";
@imap_delete($mbox,$i);
}
if (@imap_close($mbox,CL_EXPUNGE)==TRUE)
echo "Connection successfully terminated!";
else
echo "Error in closing connection!";
?>
A few thoughts, nevertheless:
1. Configuration
Either use 'dl("php_imap.dll")'[4] (here: windows, if
not multithreaded, and in case you cannot alter the php.ini file (remote server)),
or (let) untag in the php.ini file the line
Code:
extension=php_imap.dll
or corresponding to your OS.
2. Security
Since you plan to perform maintenance via email, be careful what you
allow to do. My best suggestion is to actually sign the emails you send
to that pop-account with your private key, in order to let php verify the
integrity and authenticity of the message (ie the body of the email). Make
sure to add some "salt" to the message In addition, I would also limit
the size of allowed emails.
3.Deleting mails
Please note, that I do delete downloaded mails by closing the connection
using the CL_EXPUNGE flag.
Cheers
[1] ftp://ftp.cac.washington.edu/imap/
[2] http://www.php.net/imap
[3] http://www.it-development.de/forum/s...5&pagenumber=2
[4] http://www.php.net/dl
/edit: Of course, parts of the code are copied one-to-one from php.net-comments
If the only tool you have is a hammer, you tend to see every problem as a nail.
(Abraham Maslow, Psychologist, 1908-70)
-
August 1st, 2005, 01:16 AM
#3
ah sec you've come up with the goods again
thanks matey - will take a look at the info you've provided (And the script) see what I come up with
oh and if i could i would
You must spread your AntiPoints around before giving it to sec_ware again.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|