[balsa] Fix bug 605807.
- From: Pawel Salek <pawels src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [balsa] Fix bug 605807.
- Date: Fri, 1 Jan 2010 10:31:49 +0000 (UTC)
commit 7fb5c2147f7e50244c7dce107166271a882acf75
Author: Pawel Salek <pawsa damage localdomain>
Date: Fri Jan 1 11:31:27 2010 +0100
Fix bug 605807.
ChangeLog | 4 ++++
libbalsa/send.c | 53 +++++++++++++++++++++++++++++++++++++++--------------
2 files changed, 43 insertions(+), 14 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 00f0296..955b03f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-01-01 Pawel Salek
+
+ * libbalsa/send.c: Fix bug 605807.
+
2009-12-30 Pawel Salek
* configure.in: gtkspell build requires enchant now as well.\
diff --git a/libbalsa/send.c b/libbalsa/send.c
index d3beeec..b8ae03d 100644
--- a/libbalsa/send.c
+++ b/libbalsa/send.c
@@ -1473,6 +1473,24 @@ balsa_send_message_real(SendMessageInfo* info)
}
#else /* ESMTP */
+static void
+sendmail_add_recipients(GPtrArray *args, InternetAddressList* recipient_list)
+{
+ const InternetAddress *ia;
+ int i;
+
+ if (recipient_list == NULL)
+ return;
+
+ for (i = 0; i < internet_address_list_length(recipient_list); i++) {
+ ia = internet_address_list_get_address(recipient_list, i);
+
+ if (INTERNET_ADDRESS_IS_MAILBOX(ia))
+ g_ptr_array_add(args, INTERNET_ADDRESS_MAILBOX(ia)->addr);
+ else
+ sendmail_add_recipients(args, INTERNET_ADDRESS_GROUP(ia)->members);
+ }
+}
/* balsa_send_message_real:
does the actual message sending.
@@ -1503,29 +1521,36 @@ balsa_send_message_real(SendMessageInfo* info)
}
#endif
+
while ( (mqi = get_msg2send()) != NULL) {
GPtrArray *args = g_ptr_array_new();
LibBalsaMessage *msg = LIBBALSA_MESSAGE(mqi->orig);
- InternetAddressList *list;
- const gchar *mailbox;
+ InternetAddress *ia;
gchar *cmd;
FILE *sendmail;
GMimeStream *out;
g_ptr_array_add(args, SENDMAIL);
+
+ /* Determine the sender info */
+ if (msg->headers->from
+ && (ia=internet_address_list_get_address(msg->headers->from, 0))) {
+ while (ia && INTERNET_ADDRESS_IS_GROUP (ia))
+ ia = internet_address_list_get_address
+ (INTERNET_ADDRESS_GROUP (ia)->members, 0);
+
+ if (ia) {
+ g_ptr_array_add(args, "-f");
+ g_ptr_array_add(args, INTERNET_ADDRESS_MAILBOX (ia)->addr);
+ }
+ }
+
g_ptr_array_add(args, "--");
- for (list = msg->headers->to_list; list; list = list->next) {
- mailbox = libbalsa_address_get_mailbox_from_list(list);
- g_ptr_array_add(args, (char*)mailbox);
- }
- for (list = msg->headers->cc_list; list; list = list->next) {
- mailbox = libbalsa_address_get_mailbox_from_list(list);
- g_ptr_array_add(args, (char*)mailbox);
- }
- for (list = msg->headers->bcc_list; list; list = list->next) {
- mailbox = libbalsa_address_get_mailbox_from_list(list);
- g_ptr_array_add(args, (char*)mailbox);
- }
+
+ sendmail_add_recipients(args, msg->headers->to_list);
+ sendmail_add_recipients(args, msg->headers->cc_list);
+ sendmail_add_recipients(args, msg->headers->bcc_list);
+
g_ptr_array_add(args, NULL);
cmd = g_strjoinv(" ", (gchar**)args->pdata);
g_ptr_array_free(args, FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]