|
|
| version 1.104, 2004/05/11 15:03:49 | version 1.112, 2009/07/06 12:13:30 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: @b mail parser class. | Parser: @b mail parser class. |
| Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2009 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| */ | */ |
| Line 21 static const char * const IDENT_MAIL_C=" | Line 21 static const char * const IDENT_MAIL_C=" |
| #include "smtp.h" | #include "smtp.h" |
| // debug switches | |
| //#define DEBUG_JUST_SEE_MESSAGE | |
| // defines | // defines |
| #define MAIL_CLASS_NAME "mail" | #define MAIL_CLASS_NAME "mail" |
| Line 69 static void sendmail( | Line 73 static void sendmail( |
| options | options |
| #endif | #endif |
| ) { | ) { |
| const char* message_cstr=message.cstr(String::L_UNSPECIFIED); | const char* message_cstr=message.untaint_cstr(String::L_AS_IS); |
| const char* exception_type="email.format"; | const char* exception_type="email.format"; |
| if(!from) // we use in sendmail -f {from} && SMTP MAIL from: {from} | if(!from) // we use in sendmail -f {from} && SMTP MAIL from: {from} |
| Line 94 static void sendmail( | Line 98 static void sendmail( |
| #if WIN32 | #if WIN32 |
| // win32 without SMTP server configured | // win32 without SMTP server configured |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "$"MAIN_CLASS_NAME":"MAIL_NAME".SMTP not defined"); | "$"MAIN_CLASS_NAME":"MAIL_NAME".SMTP not defined"); |
| #else | #else |
| Line 105 static void sendmail( | Line 109 static void sendmail( |
| String* sendmail_command=new String; | String* sendmail_command=new String; |
| if(vmail_conf) { | if(vmail_conf) { |
| #ifdef PA_FORCED_SENDMAIL | #ifdef PA_FORCED_SENDMAIL |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "Parser was configured with --with-sendmail="PA_FORCED_SENDMAIL | "Parser was configured with --with-sendmail="PA_FORCED_SENDMAIL |
| " key, to change sendmail you should reconfigure and recompie it"); | " key, to change sendmail you should reconfigure and recompie it"); |
| Line 113 static void sendmail( | Line 117 static void sendmail( |
| if(Value* sendmail_value=vmail_conf->get_hash()->get(mail_sendmail_name)) | if(Value* sendmail_value=vmail_conf->get_hash()->get(mail_sendmail_name)) |
| *sendmail_command<<sendmail_value->as_string(); | *sendmail_command<<sendmail_value->as_string(); |
| else | else |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "$"MAIN_CLASS_NAME":"MAIL_NAME"."SENDMAIL_NAME" not defined"); | "$"MAIN_CLASS_NAME":"MAIL_NAME"."SENDMAIL_NAME" not defined"); |
| #endif | #endif |
| Line 192 static void _send(Request& r, MethodPara | Line 196 static void _send(Request& r, MethodPara |
| Value& vhash=params.as_no_junction(0, "message must not be code"); | Value& vhash=params.as_no_junction(0, "message must not be code"); |
| HashStringValue* hash=vhash.get_hash(); | HashStringValue* hash=vhash.get_hash(); |
| if(!hash) | if(!hash) |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "message must be hash"); | "message must be hash"); |
| Line 214 static void _send(Request& r, MethodPara | Line 218 static void _send(Request& r, MethodPara |
| GET_SELF(r, VMail).message_hash_to_string(r, hash, 0, from, | GET_SELF(r, VMail).message_hash_to_string(r, hash, 0, from, |
| smtp_server_port?true:false /*send by SMTP=strip to?*/, to); | smtp_server_port?true:false /*send by SMTP=strip to?*/, to); |
| //r.write_pass_lang(message); | #ifdef DEBUG_JUST_SEE_MESSAGE |
| r.write_pass_lang(message); | |
| #else | |
| sendmail(vmail_conf, smtp_server_port, | sendmail(vmail_conf, smtp_server_port, |
| message, from, to, soptions); | message, from, to, soptions); |
| #endif | |
| } | } |
| // constructor & configurator | // constructor & configurator |
| Line 234 void MMail::configure_user(Request& r) { | Line 241 void MMail::configure_user(Request& r) { |
| r.classes_conf.put(name(), mail_element); | r.classes_conf.put(name(), mail_element); |
| else | else |
| if( !mail_element->is_string() ) | if( !mail_element->is_string() ) |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| 0, | 0, |
| "$" MAIL_CLASS_NAME ":" MAIL_NAME " is not hash"); | "$" MAIL_CLASS_NAME ":" MAIL_NAME " is not hash"); |
| } | } |