cvs: php4 /ext/imap php_imap.c
| From: | Frank M. Kromann | Date: | Tue, 02 Jul 2002 23:45:32 +0000 |
| Subject: | cvs: php4 /ext/imap php_imap.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-12675@lists.php.net to get a copy of this message | ||
fmk Tue Jul 2 19:45:32 2002 EDT
Modified files:
/php4/ext/imap php_imap.c
Log:
Make sure To addresses are parsed correct with RFC822.
Index: php4/ext/imap/php_imap.c
diff -u php4/ext/imap/php_imap.c:1.124 php4/ext/imap/php_imap.c:1.125
--- php4/ext/imap/php_imap.c:1.124 Tue Jul 2 15:29:15 2002
+++ php4/ext/imap/php_imap.c Tue Jul 2 19:45:32 2002
@@ -25,7 +25,7 @@
| PHP 4.0 updates: Zeev Suraski <zeev@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.c,v 1.124 2002/07/02 19:29:15 fmk Exp $ */
+/* $Id: php_imap.c,v 1.125 2002/07/02 23:45:32 fmk Exp $ */
#define IMAP41
@@ -3253,10 +3253,29 @@
#ifdef PHP_WIN32
char *tempMailTo;
+ char *tsm_errmsg = NULL;
ADDRESS *addr;
- char *bufferCc = NULL, *bufferBcc = NULL;
+ char *bufferTo = NULL, *bufferCc = NULL, *bufferBcc = NULL;
int offset;
+ if (to && *to) {
+ tempMailTo = estrdup(to);
+ bufferTo = (char *)emalloc(strlen(to));
+ offset = 0;
+ addr = NULL;
+ rfc822_parse_adrlist(&addr, tempMailTo, NULL);
+ while (addr) {
+ if (strcmp(addr->host, ERRHOST) == 0)
+ return (BAD_MSG_DESTINATION);
+ else {
+ offset += sprintf(bufferTo + offset, "%s@%s,", addr->mailbox, addr->host);
+ }
+ addr = addr->next;
+ }
+ efree(tempMailTo);
+ bufferTo[offset] = 0;
+ }
+
if (cc && *cc) {
tempMailTo = estrdup(cc);
bufferCc = (char *)emalloc(strlen(cc));
@@ -3294,8 +3313,13 @@
}
- if (TSendMail(INI_STR("SMTP"), &tsm_err, NULL, headers, subject, to, message,
bufferCc, bufferBcc, rpath) != SUCCESS) {
- php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C),
GetSMErrorText(tsm_err));
+ if (TSendMail(INI_STR("SMTP"), &tsm_err, &tsm_errmsg, headers, subject,
bufferTo, message, bufferCc, bufferBcc, rpath) != SUCCESS) {
+ if (tsm_errmsg) {
+ php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C), tsm_errmsg);
+ efree(tsm_errmsg);
+ } else {
+ php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C),
GetSMErrorText(tsm_err));
+ }
return 0;
}
if (bufferCc) efree(bufferCc);