diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2003-02-24 03:48:31 +0000 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2003-02-24 03:48:31 +0000 |
commit | badf78dc9bb6d34646e1bb4f863a5d9251dbd600 (patch) | |
tree | 82910afdf392173a26c80357b010740d4a290e7c | |
parent | 2695db713598155e1ab9b13273ba69b46be8c4c7 (diff) | |
download | evolution-data-server-badf78dc9bb6d34646e1bb4f863a5d9251dbd600.tar.gz |
Remove all Bcc headers before sending to sendmail and restore them after
2003-02-22 Jeffrey Stedfast <fejj@ximian.com>
* providers/sendmail/camel-sendmail-transport.c
(sendmail_send_to): Remove all Bcc headers before sending to
sendmail and restore them after it has been sent.
-rw-r--r-- | camel/ChangeLog | 6 | ||||
-rw-r--r-- | camel/providers/sendmail/camel-sendmail-transport.c | 36 |
2 files changed, 41 insertions, 1 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 3f8767178..5989b9407 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,9 @@ +2003-02-22 Jeffrey Stedfast <fejj@ximian.com> + + * providers/sendmail/camel-sendmail-transport.c + (sendmail_send_to): Remove all Bcc headers before sending to + sendmail and restore them after it has been sent. + 2003-02-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): Fixed a type-o in the diff --git a/camel/providers/sendmail/camel-sendmail-transport.c b/camel/providers/sendmail/camel-sendmail-transport.c index 1af237f23..70abc6802 100644 --- a/camel/providers/sendmail/camel-sendmail-transport.c +++ b/camel/providers/sendmail/camel-sendmail-transport.c @@ -85,12 +85,13 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message, CamelAddress *from, CamelAddress *recipients, CamelException *ex) { + struct _header_raw *header, *savedbcc, *n, *tail; const char *from_addr, *addr, **argv; int i, len, fd[2], nullfd, wstat; sigset_t mask, omask; CamelStream *out; pid_t pid; - + if (!camel_internet_address_get (CAMEL_INTERNET_ADDRESS (from), 0, NULL, &from_addr)) return FALSE; @@ -115,11 +116,34 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message, argv[i + 5] = NULL; + /* unlink the bcc headers */ + savedbcc = NULL; + tail = (struct _header_raw *) &savedbcc; + + header = (struct _header_raw *) &CAMEL_MIME_PART (message)->headers; + n = header->next; + while (n != NULL) { + if (!strcasecmp (header->name, "Bcc")) { + header->next = n->next; + tail->next = n; + n->next = NULL; + tail = n; + } else { + header = n; + } + + n = header->next; + } + if (pipe (fd) == -1) { camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create pipe to sendmail: " "%s: mail not sent"), g_strerror (errno)); + + /* restore the bcc headers */ + header->next = savedbcc; + return FALSE; } @@ -139,6 +163,10 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message, g_strerror (errno)); sigprocmask (SIG_SETMASK, &omask, NULL); g_free (argv); + + /* restore the bcc headers */ + header->next = savedbcc; + return FALSE; case 0: /* Child process */ @@ -170,6 +198,9 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message, sigprocmask (SIG_SETMASK, &omask, NULL); + /* restore the bcc headers */ + header->next = savedbcc; + return FALSE; } @@ -181,6 +212,9 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message, sigprocmask (SIG_SETMASK, &omask, NULL); + /* restore the bcc headers */ + header->next = savedbcc; + if (!WIFEXITED (wstat)) { camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("sendmail exited with signal %s: " |