diff options
author | Frank M. Kromann <fmk@php.net> | 2002-07-02 19:29:15 +0000 |
---|---|---|
committer | Frank M. Kromann <fmk@php.net> | 2002-07-02 19:29:15 +0000 |
commit | 407a0ec66ade7b13b306e0f9ce60d571c9206a21 (patch) | |
tree | 24ed5c0f672ddbfb06e42bda301f0d4e49ddfafc /ext/imap/php_imap.c | |
parent | 1565e5d1bc46cc6154d6d360e2d195d193892761 (diff) | |
download | php-git-407a0ec66ade7b13b306e0f9ce60d571c9206a21.tar.gz |
Switch from imap_sendmail.* to sendmail.c under Win32
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r-- | ext/imap/php_imap.c | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index 17a968746e..aab668654a 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -51,8 +51,9 @@ #include <signal.h> #ifdef PHP_WIN32 -#include "winsock.h" -#include "win32/imap_sendmail.h" +#include <winsock.h> +#include <stdlib.h> +#include "win32/sendmail.h" MAILSTREAM DEFAULTPROTO; #endif @@ -3251,10 +3252,54 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char * #endif #ifdef PHP_WIN32 - if (imap_TSendMail(INI_STR("SMTP"), &tsm_err, headers, subject, to, message, cc, bcc, rpath) != SUCCESS) { + char *tempMailTo; + ADDRESS *addr; + char *bufferCc = NULL, *bufferBcc = NULL; + int offset; + + if (cc && *cc) { + tempMailTo = estrdup(cc); + bufferCc = (char *)emalloc(strlen(cc)); + 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(bufferCc + offset, "%s@%s,", addr->mailbox, addr->host); + } + addr = addr->next; + } + efree(tempMailTo); + bufferCc[offset] = 0; + } + + if (bcc && *bcc) { + tempMailTo = estrdup(bcc); + bufferBcc = (char *)emalloc(strlen(bcc)); + 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(bufferBcc + offset, "%s@%s,", addr->mailbox, addr->host); + } + addr = addr->next; + } + efree(tempMailTo); + bufferBcc[offset] = 0; + } + + + 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)); return 0; } + if (bufferCc) efree(bufferCc); + if (bufferBcc) efree(bufferBcc); #else if (!INI_STR("sendmail_path")) { return 0; |