--- parser3/src/classes/mail.C 2003/07/24 11:31:20 1.89 +++ parser3/src/classes/mail.C 2003/11/21 12:44:41 1.97 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_MAIL_C="$Date: 2003/07/24 11:31:20 $"; +static const char * const IDENT_MAIL_C="$Date: 2003/11/21 12:44:41 $"; #include "pa_config_includes.h" #include "pa_vmethod_frame.h" @@ -20,13 +20,13 @@ static const char* IDENT_MAIL_C="$Date: #include "pa_vmail.h" #ifdef _MSC_VER -# include "smtp/smtp.h" +# include "smtp.h" #endif // defines #define MAIL_CLASS_NAME "mail" -#define MAIL_SENDMAIL_NAME "sendmail" +#define SENDMAIL_NAME "sendmail" // consts @@ -54,13 +54,22 @@ DECLARE_CLASS_VAR(mail, 0/*fictive*/, ne // statics static const String mail_name(MAIL_NAME); -static const String mail_sendmail_name(MAIL_SENDMAIL_NAME); +static const String mail_sendmail_name(SENDMAIL_NAME); // helpers static void sendmail(Request& r, const String& message, - const String* from, const String* to) { + const String* from, const String* +#ifdef _MSC_VER + to +#endif + , + const String* +#ifndef _MSC_VER + options +#endif + ) { const char* message_cstr=message.cstr(String::L_UNSPECIFIED); Value* vmail_conf=static_cast(r.classes_conf.get(mail_base_class->name())); @@ -80,7 +89,7 @@ static void sendmail(Request& r, Value* server_port; // $MAIN:MAIL.SMTP[mail.yourdomain.ru[:port]] if(vmail_conf && - (server_port=vmail_conf->get_hash()->get(StringBody("SMTP")))) { + (server_port=vmail_conf->get_hash()->get(String::Body("SMTP")))) { char* server=server_port->as_string().cstrm(); const char* port=rsplit(server, ':'); if(!port) @@ -96,7 +105,7 @@ static void sendmail(Request& r, // $MAIN:MAIL.sendmail["/usr/sbin/sendmail -t -i -f postmaster"] default // $MAIN:MAIL.sendmail["/usr/lib/sendmail -t -i -f postmaster"] default - const String* sendmail_command; + String* sendmail_command=new String; if(vmail_conf) { #ifdef PA_FORCED_SENDMAIL throw Exception("parser.runtime", @@ -105,23 +114,25 @@ static void sendmail(Request& r, " key, to change sendmail you should reconfigure and recompie it"); #else if(Value* sendmail_value=vmail_conf->get_hash()->get(mail_sendmail_name)) - sendmail_command=&sendmail_value->as_string(); + *sendmail_command<as_string(); else throw Exception("parser.runtime", 0, - "$"MAIN_CLASS_NAME":"MAIL_NAME"."MAIL_SENDMAIL_NAME" not defined"); + "$"MAIN_CLASS_NAME":"MAIL_NAME"."SENDMAIL_NAME" not defined"); #endif } else { #ifdef PA_FORCED_SENDMAIL - sendmail_command=new String(PA_FORCED_SENDMAIL); + *sendmail_command<pos("postmaster"); @@ -151,12 +162,12 @@ static void sendmail(Request& r, #ifdef PA_FORCED_SENDMAIL " Use configure key \"--with-sendmail=appropriate sendmail command\"" #else - " Set $"MAIN_CLASS_NAME":"MAIL_NAME"."MAIL_SENDMAIL_NAME" to appropriate sendmail command" + " Set $"MAIN_CLASS_NAME":"MAIL_NAME"."SENDMAIL_NAME" to appropriate sendmail command" #endif ); - String in(message_cstr); String out; String err; + String in(message_cstr); PA_exec_result exec=pa_exec( // forced_allow #ifdef PA_FORCED_SENDMAIL @@ -188,6 +199,10 @@ static void _send(Request& r, MethodPara 0, "message must be hash"); + const String* soptions=0; + if(Value* voptions=hash->get(MAIL_OPTIONS_NAME)) + soptions=&voptions->as_string(); + const String* from=0; String* to=0; const String& message= @@ -200,7 +215,7 @@ static void _send(Request& r, MethodPara , to); //r.write_pass_lang(message); - sendmail(r, message, from, to); + sendmail(r, message, from, to, soptions); } // constructor & configurator