Previously I have wrote lj2mail – a script which gets fresh posts from LiveJournal and emails them to the list of recepients. I have tried to avoid sending same items over and over again, but failed. The script was implemented with the help of LiveJournal API (LJ::Simple Perl module).
I got annoyed by that script repeating some items (mess with publishing date), so I wrote a different one. rss2mail simply gets the RSS feed, parses it and emails items as individual messages to the list of recepients. I guess that caching RSS item link is much better than LiveJournal’s publishing date. Also, rss2mail is much more flexible. It can be used with any RSS feed, not only LiveJournal’s. I have tried to make it as generic as possible. If it doesn’t work with other feeds, just check the fields of the RSS feed it uses.
Try R|mail it doesn’t require any knowledge of perl. By just adding a javascript to your blog page, the entire thing just works.
And the URL is… :)
Is it possible to have this script utilize sendmail instead of smtp?
How would one go about doing that? Im n00b :D
Seraphim,
Yes, it is possible to use Sendmail instead of SMTP. Just change the line:
my $mailer = Mail::Mailer->new('smtp',Server=>$smtp_server);
to
my $mailer = Mail::Mailer->new('sendmail');
and it should work. Refer to the documentation of Mail::Mailer Perl module if you have a problem.
This is a great script, On my server I set it up as a cron job and the script will continue to send email even though the urls are in the .sent file. in the end of recieving 6000 email I looked at the .sent file and saw hundrend of duplicate entries. what am I doing wrong?
Seraphim,
this sounds really strange. Are you sure about the dups – maybe there is some difference – upper/lower case, slashes at the end of URLs or something like this?
Hello, just thought you might like to know I took your rss2mail script and converted it to an rss2ascii script.
It reformats the HTML into a sort of plain-text report and sends it’s output to stdout, where it can be fed into the standard input of other programs (like inews or sendmail) I’m using it to read plain-text versions of RSS on a local news system.
RSS plaintext converter
Thanks for the info, Jamie. It’s nice to know that the script was useful to someone else besides me. :)
Leonid, I know there haven’t been any comments on this in a while, but I was having the same problem as Seraphim – it was sending mail for every entry on every run. The problem is with blogs that use a “?” in the post URL (i.e. WordPress if fancy links haven’t been setup). Since you’re using grep with an unescaped string, a “?” in $url is seen as a wildcard. At least I think that’s what the problem is. Either way, I changed @cached_urls to be a hash (%cached_urls) using the url as both the key and the value. Now duplicates are not possible, and I simply changed the grep test to unless ( exists $cached_urls{$url} ) and everything seems to work fine, since it’s testing literal scalars/strings.
Hi Jason. Thanks for the comment. It’s been a while indeed since I wrote this. :)
Can you post the fixed source code anywhere? GitHub/Gist or blog or something. I think it will be easier for all the people who are coming over to just have the full working source than to apply patches and fixes from all the comments. ;)
Thanks.