From 5ef4a52bca7cabe23a66c7834868c5677aee0860 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Fri, 6 May 2011 13:32:47 +0200 Subject: [PATCH] =?utf8?q?Aggiunta=20la=20possibilit=E0=20in=20SolipaMailU?= =?utf8?q?I=20di=20specificare=20pi=F9=20di=20un=20indirizzo=20nei=20campi?= =?utf8?q?=20to,=20cc=20e=20bcc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/mailui.c | 77 +++++++++++++++++++++++++++++++++++++++++--------- tests/mailui.c | 3 +- 2 files changed, 65 insertions(+), 15 deletions(-) diff --git a/src/mailui.c b/src/mailui.c index 5ccf722..59cf531 100644 --- a/src/mailui.c +++ b/src/mailui.c @@ -358,6 +358,8 @@ solipa_mail_ui_send (SolipaMailUI *mailui) gchar *subject; gchar *body; + GSList *lst_addrs; + CamelInternetAddress *addr; g_return_val_if_fail (IS_SOLIPA_MAIL_UI (mailui), FALSE); @@ -385,10 +387,21 @@ solipa_mail_ui_send (SolipaMailUI *mailui) if (g_strcmp0 (g_strstrip (from), "") != 0) { - addr = camel_internet_address_new (); - camel_internet_address_add (addr, "Prova from", from); - solipa_mail_set_from (smail, addr); - camel_address_remove (CAMEL_ADDRESS (addr), -1); + lst_addrs = solipa_mail_get_addresses_from_string (from); + if (lst_addrs != NULL) + { + addr = camel_internet_address_new (); + camel_internet_address_add (addr, + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "name"), + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "address")); + solipa_mail_set_from (smail, addr); + camel_address_remove (CAMEL_ADDRESS (addr), -1); + } + else + { + g_warning ("Campo Da: mancante."); + return FALSE; + } } else { @@ -398,9 +411,25 @@ solipa_mail_ui_send (SolipaMailUI *mailui) if (g_strcmp0 (g_strstrip (to), "") != 0) { - camel_internet_address_add (addr, "Prova to", to); - solipa_mail_add_recipient (smail, addr, SOLIPA_MAIL_RECIPIENT_TYPE_TO); - camel_address_remove (CAMEL_ADDRESS (addr), -1); + lst_addrs = solipa_mail_get_addresses_from_string (to); + if (lst_addrs != NULL) + { + while (lst_addrs != NULL) + { + camel_internet_address_add (addr, + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "name"), + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "address")); + lst_addrs = g_slist_next (lst_addrs); + } + + solipa_mail_add_recipient (smail, addr, SOLIPA_MAIL_RECIPIENT_TYPE_TO); + camel_address_remove (CAMEL_ADDRESS (addr), -1); + } + else + { + g_warning ("Campo A: mancante."); + return FALSE; + } } else { @@ -410,16 +439,38 @@ solipa_mail_ui_send (SolipaMailUI *mailui) if (g_strcmp0 (g_strstrip (cc), "") != 0) { - camel_internet_address_add (addr, "Prova cc", cc); - solipa_mail_add_recipient (smail, addr, SOLIPA_MAIL_RECIPIENT_TYPE_CC); - camel_address_remove (CAMEL_ADDRESS (addr), -1); + lst_addrs = solipa_mail_get_addresses_from_string (cc); + if (lst_addrs != NULL) + { + while (lst_addrs != NULL) + { + camel_internet_address_add (addr, + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "name"), + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "address")); + lst_addrs = g_slist_next (lst_addrs); + } + + solipa_mail_add_recipient (smail, addr, SOLIPA_MAIL_RECIPIENT_TYPE_CC); + camel_address_remove (CAMEL_ADDRESS (addr), -1); + } } if (g_strcmp0 (g_strstrip (bcc), "") != 0) { - camel_internet_address_add (addr, "Prova bcc", bcc); - solipa_mail_add_recipient (smail, addr, SOLIPA_MAIL_RECIPIENT_TYPE_BCC); - camel_address_remove (CAMEL_ADDRESS (addr), -1); + lst_addrs = solipa_mail_get_addresses_from_string (bcc); + if (lst_addrs != NULL) + { + while (lst_addrs != NULL) + { + camel_internet_address_add (addr, + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "name"), + g_hash_table_lookup ((GHashTable *)lst_addrs->data, "address")); + lst_addrs = g_slist_next (lst_addrs); + } + + solipa_mail_add_recipient (smail, addr, SOLIPA_MAIL_RECIPIENT_TYPE_BCC); + camel_address_remove (CAMEL_ADDRESS (addr), -1); + } } g_object_unref (addr); diff --git a/tests/mailui.c b/tests/mailui.c index 22b3607..8ebe31c 100644 --- a/tests/mailui.c +++ b/tests/mailui.c @@ -98,10 +98,9 @@ main (int argc, char *argv[]) g_object_set (G_OBJECT (mailui), "smtp-uri", "smtp://mail.comune.scandicci.fi.it/", - "from", "a.zagli@comune.scandicci.fi.it", + "from", "Andrea Zagli ", "from-editable", FALSE, "to", "a.zagli@comune.scandicci.fi.it", - "cc-visible", FALSE, "bcc-visible", FALSE, "subject", "Da SolipaMailUI", "body", "Il body della mail\n" -- 2.49.0