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

system.verbs.builtins.mainResponder.members.sendMail

on sendMail (mailaddress, adrmemberstable, pta=nil) {
	<<Changes:
		<<04/14/00; 9:15:22 PM by JES
			<<localized error messages
		<<05/01/00; 6:58:20 PM by JES
			<<Changed getString calls to use a replacement table address instead of a lists
		<<10/27/00; 10:35:01 PM by PBS
			<<The page table addres is now an optional parameter. It may be needed by localization routines.
	mainresponder.members.validmailaddress (mailaddress); //scriptErrors if not valid
	
	local (adrusers = @adrmemberstable^.users);
	if not defined (adrusers^) {
		new (tabletype, adrusers)};
	local (adrpendingmember = @adrusers^.[mailaddress]);
	
	local (flnewpassword = true);
	if adrmemberstable^.openToPublic {
		if defined (adrpendingmember^) {
			flnewpassword = false}
		else {
			new (tabletype, adrpendingmember)}}
	else {
		if not defined (adrpendingmember^) {
			local (replacementTable); new (tableType, @replacementTable); // 05/01/00 JES: use replacement table instead of a list
			replacementTable.sysopmail = user.prefs.mailaddress;
			scriptError (mainResponder.getString ("members.sendMailNotPublicError", @replacementTable, pta:pta))}; // 4/14/00 JES: localized //PBS 10/27/00: send pta parameter
		if defined (adrpendingmember^.password) {
			local (replacementTable); new (tableType, @replacementTable); // 05/01/00 JES: use replacement table instead of a list
			replacementTable.mailaddress = mailaddress;
			scriptError (mainResponder.getString ("members.sendMailAlreadyMemberError", @replacementTable, pta:pta))}}; // 4/14/00 JES: localized //PBS 10/27/00: send pta parameter
	
	if flnewpassword {
		local (password);
		bundle { //create a new password
			for i = 1 to 12 {
				password = password + char (random ('A', 'Z'))};
			adrpendingmember^.password = password}};
	bundle { //send the email message
		local (s = string (adrmemberstable^.mailtemplate));
		s = string.replaceAll (s, "<<password>>", adrpendingmember^.password);
		s = string.davenetMassager (2, 60, s);
		local (subject = adrmemberstable^.mailSubject);
		local (returnAddress = adrmemberstable^.mailReturnAddress);
		tcp.sendMail (mailaddress, subject, s, returnAddress);
		msg ("")}; //erase messages displayed by tcp.sendMail
	fileMenu.saveMyRoot (adrmemberstable);
	return (true)}
<<bundle //test code
	<<sendMail ("dave@userland.com", @["C:\\Palm Springs\\Websites\\discussiongroup.root"].["#members"])



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.