summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorFrank M. Kromann <fmk@php.net>2002-07-02 22:29:13 +0000
committerFrank M. Kromann <fmk@php.net>2002-07-02 22:29:13 +0000
commit57ec06677f1446b1e44a97f45d4d1f58d167c987 (patch)
tree679260fd8da1373a80093b844238a7da119dec95 /win32
parenta66cbb8e07852687251d2da49784db178021e8da (diff)
downloadphp-git-57ec06677f1446b1e44a97f45d4d1f58d167c987.tar.gz
Switch from imap_sendmail.* to sendmail.c under Win32
Diffstat (limited to 'win32')
-rw-r--r--win32/sendmail.c63
-rw-r--r--win32/sendmail.h6
2 files changed, 60 insertions, 9 deletions
diff --git a/win32/sendmail.c b/win32/sendmail.c
index 4ef759ec20..721dd57843 100644
--- a/win32/sendmail.c
+++ b/win32/sendmail.c
@@ -191,7 +191,8 @@ static char *php_win32_mail_trim_header(char *header TSRMLS_DC)
// See SendText() for additional args!
//********************************************************************/
int TSendMail(char *host, int *error, char **error_message,
- char *headers, char *Subject, char *mailTo, char *data)
+ char *headers, char *Subject, char *mailTo, char *data,
+ char *mailCc, char *mailBcc, char *mailRPath)
{
int ret;
char *RPath = NULL;
@@ -233,7 +234,10 @@ int TSendMail(char *host, int *error, char **error_message,
}
/* Fall back to sendmail_from php.ini setting */
- if (INI_STR("sendmail_from")) {
+ if (mailRPath && *mailRPath) {
+ RPath = estrdup(mailRPath);
+ }
+ else if (INI_STR("sendmail_from")) {
RPath = estrdup(INI_STR("sendmail_from"));
} else {
if (headers) {
@@ -264,7 +268,7 @@ int TSendMail(char *host, int *error, char **error_message,
MailHost, !INI_INT("smtp_port") ? 25 : INI_INT("smtp_port"));
return FAILURE;
} else {
- ret = SendText(RPath, Subject, mailTo, data, headers, headers_lc, error_message);
+ ret = SendText(RPath, Subject, mailTo, mailCc, mailBcc, data, headers, headers_lc, error_message);
TSMClose();
if (RPath) {
efree(RPath);
@@ -341,7 +345,8 @@ char *GetSMErrorText(int index)
// Author/Date: jcar 20/9/96
// History:
//*******************************************************************/
-int SendText(char *RPath, char *Subject, char *mailTo, char *data, char *headers, char *headers_lc, char **error_message)
+int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char *mailBcc, char *data,
+ char *headers, char *headers_lc, char **error_message)
{
int res, i;
char *p;
@@ -426,11 +431,35 @@ int SendText(char *RPath, char *Subject, char *mailTo, char *data, char *headers
token = strtok(tempMailTo, ",");
while(token != NULL)
{
- sprintf(Buffer, "RCPT TO:<%s>\r\n", token);
- if ((res = Post(Buffer)) != SUCCESS)
+ snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
+ if ((res = Post(Buffer)) != SUCCESS) {
+ efree(tempMailTo);
return (res);
+ }
if ((res = Ack(&server_response)) != SUCCESS) {
SMTP_ERROR_RESPONSE(server_response);
+ efree(tempMailTo);
+ return (res);
+ }
+ token = strtok(NULL, ",");
+ }
+ efree(tempMailTo);
+ }
+
+ if (mailCc && *mailCc) {
+ tempMailTo = estrdup(mailCc);
+ /* Send mail to all rcpt's */
+ token = strtok(tempMailTo, ",");
+ while(token != NULL)
+ {
+ snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
+ if ((res = Post(Buffer)) != SUCCESS) {
+ efree(tempMailTo);
+ return (res);
+ }
+ if ((res = Ack(&server_response)) != SUCCESS) {
+ SMTP_ERROR_RESPONSE(server_response);
+ efree(tempMailTo);
return (res);
}
token = strtok(NULL, ",");
@@ -498,6 +527,26 @@ int SendText(char *RPath, char *Subject, char *mailTo, char *data, char *headers
}
}
}
+ if (mailBcc && *mailBcc) {
+ tempMailTo = estrdup(mailBcc);
+ /* Send mail to all rcpt's */
+ token = strtok(tempMailTo, ",");
+ while(token != NULL)
+ {
+ snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
+ if ((res = Post(Buffer)) != SUCCESS) {
+ efree(tempMailTo);
+ return (res);
+ }
+ if ((res = Ack(&server_response)) != SUCCESS) {
+ SMTP_ERROR_RESPONSE(server_response);
+ efree(tempMailTo);
+ return (res);
+ }
+ token = strtok(NULL, ",");
+ }
+ efree(tempMailTo);
+ }
if ((res = Post("DATA\r\n")) != SUCCESS) {
efree(stripped_header);
@@ -646,7 +695,7 @@ int PostHeader(char *RPath, char *Subject, char *mailTo, char *xheaders, char *m
}
}
if(xheaders){
- if (!addToHeader(&header_buffer, "%s\r\n", xheaders)) {
+ if (!addToHeader(&header_buffer, "%s", xheaders)) {
goto PostHeader_outofmem;
}
}
diff --git a/win32/sendmail.h b/win32/sendmail.h
index cf4f6af5b9..9282cc6cbc 100644
--- a/win32/sendmail.h
+++ b/win32/sendmail.h
@@ -33,9 +33,11 @@
int TSendMail(char *smtpaddr, int *returnerror, char **error_message,
- char *RPath, char *Subject, char *mailTo, char *data);
+ char *RPath, char *Subject, char *mailTo, char *data,
+ char *mailCc, char *mailBcc, char *mailRPath);
void TSMClose(void);
-int SendText(char *RPath, char *Subject, char *mailTo, char *data, char *headers, char *headers_lc, char **error_message);
+int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char *mailBcc, char *data,
+ char *headers, char *headers_lc, char **error_message);
char *GetSMErrorText(int index);
int MailConnect();