|
|
| version 1.6, 2001/11/05 11:46:23 | version 1.10, 2002/03/27 15:30:35 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: SMTP sender. | Parser: SMTP sender. |
| Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| $Id$ | $Id$ |
| Parts of the code here is based upon an early gensock and blat | Parts of the code here is based upon an early gensock and blat |
| */ | */ |
| #include "smtp.h" | |
| #include "pa_exception.h" | #include "pa_exception.h" |
| #include "smtp.h" | |
| SMTP::SMTP(Pool& pool, const String& aorigin_string) : Pooled(pool), | SMTP::SMTP(Pool& pool, const String& aorigin_string) : Pooled(pool), |
| origin_string(aorigin_string) { | origin_string(aorigin_string) { |
| Line 56 ConnectToHost(const char *hostname, cons | Line 56 ConnectToHost(const char *hostname, cons |
| CloseConnect(); | CloseConnect(); |
| throw Exception(0, 0, | throw Exception("smtp.connect", |
| &origin_string, | &origin_string, |
| "connect to %s:%s failed", | "connect to %s:%s failed", |
| hostname, service); | hostname, service); |
| Line 222 SendLine(const char *data, unsigned long | Line 222 SendLine(const char *data, unsigned long |
| while( length > 0 ) | while( length > 0 ) |
| { | { |
| if( SOCKET_ERROR == select(0, NULL, &fds, NULL, &timeout) ) | if( SOCKET_ERROR == select(0, NULL, &fds, NULL, &timeout) ) |
| throw Exception(0, 0, | throw Exception("smtp.execute", |
| &origin_string, | &origin_string, |
| "connection::put_data() unexpected error from select: %d", | "connection::put_data() unexpected error from select: %d", |
| WSAGetLastError()); | WSAGetLastError()); |
| Line 247 SendLine(const char *data, unsigned long | Line 247 SendLine(const char *data, unsigned long |
| break; | break; |
| default: | default: |
| throw Exception(0, 0, | throw Exception("smtp.execute", |
| &origin_string, | &origin_string, |
| "connection::put_data() unexpected error from send(): %d", | "connection::put_data() unexpected error from send(): %d", |
| ws_error); | ws_error); |
| Line 321 SendSmtpError(const char * message) | Line 321 SendSmtpError(const char * message) |
| SendLine("QUIT\r\n", 6); | SendLine("QUIT\r\n", 6); |
| CloseConnect(); | CloseConnect(); |
| throw Exception(0, 0, | throw Exception("smtp.execute", |
| &origin_string, | &origin_string, |
| "failed: %s", message); | "failed: %s", message); |
| } | } |
| Line 413 open_socket( const char *server, const c | Line 413 open_socket( const char *server, const c |
| ConnectToHost(server, service); | ConnectToHost(server, service); |
| if( gethostname(my_hostname, sizeof(my_hostname)) ) | if( gethostname(my_hostname, sizeof(my_hostname)) ) |
| throw Exception(0, 0, | throw Exception("smtp.connect", |
| &origin_string, | &origin_string, |
| "lookup of '%s' failed", my_hostname); | "lookup of '%s' failed", my_hostname); |
| } | } |
| Line 464 prepare_message(char *from, char *to, co | Line 464 prepare_message(char *from, char *to, co |
| SendLine(out_data, lstrlen(out_data) ); | SendLine(out_data, lstrlen(out_data) ); |
| if( 250 != get_line() ) | if( 250 != get_line() ) |
| throw Exception(0, 0, | throw Exception("smtp.execute", |
| &origin_string, | &origin_string, |
| "The mail server doesn't like the name %s. Have you set the 'To: ' field correctly?", | "The mail server doesn't like the name %s. Have you set the 'To: ' field correctly?", |
| ptr); | ptr); |