Monday, November 08, 2010 at 12:05 AM.

system.verbs.builtins.radio.weblog.checkMail

<<Changes
	<<11/23/01; 3:09:57 PM by JES
		<<Save the adrpost returned by radio.weblog.post, and pass it to radio.weblog.updatePagesForPost, to update all of the pages that the post appears in.
	<<10/19/01; 4:16:56 PM by DW
		<<Testing, debugging, fixing for 7.1.
		<<string.trimwhitespace the posts. No need for trailing carriage returns on the posts. 
		<<Add pref to control how often mail is checked. Initialized in radio.weblog.init.
	<<10/19/01; 4:16:42 PM by DW
		<<Check out for Radio 7.1.
	<<3/25/01; 9:53:05 AM by DW
		<<Add callback support. Loop over all the scripts in myUserLandData.callbacks.blogCheckMail passing the address of each message. Ignore any returned value or script error. 
		<<Comment out assignment to scratchpad.emailText.
	<<3/1/01; 5:53:14 PM by JES
		<<Convert quoted printable text to ASCII. Untaint text before posting. Remove linefeeds.
	<<2/24/01; 7:30:49 AM by DW
		<<This is the My.UserLand.On.The.Blackberry feature that Scott Loftesness asked for.
		<<If enabled, we check a mail address and see if there are any posts available for us.
		<<The subject must match the "secret subject", the body contains the post.

local (adrblog = radio.weblog.init ());
if adrblog^.prefs.mailPosting.enabled {
	if not defined (system.temp.radio.misc.lastMailPostingCheck) {
		system.temp.radio.misc.lastMailPostingCheck = date (0)};
	if clock.now () > (system.temp.radio.misc.lastMailPostingCheck + adrblog^.prefs.mailPosting.ctSecondsBetweenChecks) {
		system.temp.radio.misc.lastMailPostingCheck = clock.now ();
		local (msgtable, adrmsg);
		with adrblog^.prefs.mailPosting {
			tcp.getmail (server, account, password, @msgtable, deleteMessages:true, flMessages: false);
			adrblog^.stats.ctMailToBlogChecks++};
		for adrmsg in @msgtable {
			bundle { //run msg through callbacks
				try {
					if defined (adrblog^.callbacks.weblogCheckMail) {
						local (adrcallback);
						for adrcallback in @adrblog^.callbacks.weblogCheckMail {
							while typeOf (adrcallback^) == addressType {
								adrcallback = adrcallback^};
							try {adrcallback^ (adrmsg)}}}}};
			if adrmsg^.subject == string (adrblog^.prefs.mailPosting.secretSubject) {
				local (s = adrmsg^.text);
				s = string.trimWhitespace (s);
				s = string.quotedPrintableDecode (s);
				s = string.replaceAll (s, "\r\n", "\r");
				s = radio.string.untaint (s);
				local (adrpost = radio.weblog.post (s, adrblog));
				radio.weblog.updatePagesForPost (adrpost);
				adrblog^.stats.ctMailToBlogPosts++}}}}



This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.