Home > Archive > PHP on Windows > April 2005 > Get an RSS reader to E-Mail content
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Get an RSS reader to E-Mail content
|
|
| Maxwell Brodie 2005-04-26, 3:57 am |
| Hello,
I am using the following script to keep me up to date from any computer in
the world that has web access, but I would like to get it to automatically
E-mail the content to my E-mail adress, here is what I have so far.
<?php
set_time_limit(0);
$file = "http://news.php.net/group.php?group=php.doc.tr&format=rss";
$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;
function startElement($parser, $name, $attrs) {
global $rss_channel, $currently_writing, $main;
switch($name) {
case "RSS":
case "RDF:RDF":
case "ITEMS":
$currently_writing = "";
break;
case "CHANNEL":
$main = "CHANNEL";
break;
case "IMAGE":
$main = "IMAGE";
$rss_channel["IMAGE"] = array();
break;
case "ITEM":
$main = "ITEMS";
break;
default:
$currently_writing = $name;
break;
}
}
function endElement($parser, $name) {
global $rss_channel, $currently_writing, $item_counter;
$currently_writing = "";
if ($name == "ITEM") {
$item_counter++;
}
}
function characterData($parser, $data) {
global $rss_channel, $currently_writing, $main, $item_counter;
if ($currently_writing != "") {
switch($main) {
case "CHANNEL":
if (isset($rss_channel[$currently_writing])
) {
$rss_channel[$currently_writing] .= $data;
} else {
$rss_channel[$currently_writing] = $data;
}
break;
case "IMAGE":
if (isset($rss_channel[$main][$currently_wr
iting])) {
$rss_channel[$main][$currently_writing] .= $data;
} else {
$rss_channel[$main][$currently_writing] = $data;
}
break;
case "ITEMS":
if (isset($rss_channel[$main][$item_counter
][$currently_writing])) {
$rss_channel[$main][$item_counter][$curr
ently_writing] .= $data;
} else {
$rss_channel[$main][$item_counter][$curr
ently_writing] = $data;
}
break;
}
}
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_pars
er, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml
_parser)),
xml_get_current_line_number($xml_parser)
));
}
}
xml_parser_free($xml_parser);
// output HTML
print ("<div class=\"channelname\">" . $rss_channel["TITLE"] . "</div>");
print ("<div class=\"channeldescription\">" . $rss_channel["DESCRIPTION"] .
"</div><br />");
if (isset($rss_channel["ITEMS"])) {
if (count($rss_channel["ITEMS"]) > 0) {
for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
if (isset($rss_channel["ITEMS"][$i]["LINK"])) {
print ("\n<div class=\"itemtitle\"><a href=\"" .
$rss_channel["ITEMS"][$i]["LINK"] . "\">" .
$rss_channel["ITEMS"][$i]["TITLE"] . "</a></div>");
} else {
print ("\n<div class=\"itemtitle\">" . $rss_channel["ITEMS"][$i]["TITLE"]
.. "</div>");
}
print ("<div class=\"itemdescription\">" .
$rss_channel["ITEMS"][$i]["DESCRIPTION"] . "</div><br />"); }
} else {
print ("<b>There are no articles in this feed.</b>");
}
}
?>
Just to recapp, I want to get the information from the RSS feed e-mailed to
my address.
Any help would be appriciated,
Thanks!
| |
| Jason Barnett 2005-04-26, 3:58 pm |
| Maxwell Brodie wrote:
> Hello,
>
> I am using the following script to keep me up to date from any computer in
> the world that has web access, but I would like to get it to automatically
> E-mail the content to my E-mail adress, here is what I have so far.
>
I know this isn't what you were asking for, but... have you considered
using Mozilla Thunderbird?
http://www.mozilla.org/products/thunderbird/all.html
The reason I ask this is because I use it and it already aggregates RSS
feeds for me. It also allows me to aggregate all of my email addresses
into one program instead of checking each one individually. Thunderbird
actually is not so great at sending from multiple email addresses, but
it is quite excellent for reading everything above from one program.
Heck I'm using it right now. :)
And please let's not turn this into a contest over "which email client
is the best." I'm merely trying to point out that there are already
MUA's out there that will do what the OP wants. Feel free to chime in
though if your MUA does aggregate RSS feeds! Or if you actually want to
answer the original question that I dodged for that matter :)
| |
| Maxwell Brodie 2005-04-26, 3:58 pm |
| Hello,
I am already using a desktop solution, but I like this script because I can
call upon my feeds from anywhere in the world, but my next step would just
be to add e-mail functionality.
"Jason Barnett" <jason.barnett@telesuite.com> wrote in message
news:20050426133941.67662.qmail@lists.php.net...
> Maxwell Brodie wrote:
>
> I know this isn't what you were asking for, but... have you considered
> using Mozilla Thunderbird?
>
> http://www.mozilla.org/products/thunderbird/all.html
>
> The reason I ask this is because I use it and it already aggregates RSS
> feeds for me. It also allows me to aggregate all of my email addresses
> into one program instead of checking each one individually. Thunderbird
> actually is not so great at sending from multiple email addresses, but it
> is quite excellent for reading everything above from one program. Heck I'm
> using it right now. :)
>
> And please let's not turn this into a contest over "which email client is
> the best." I'm merely trying to point out that there are already MUA's
> out there that will do what the OP wants. Feel free to chime in though if
> your MUA does aggregate RSS feeds! Or if you actually want to answer the
> original question that I dodged for that matter :)
|
|
|
|
|