* src/mh.c
[claws.git] / src / send.c
index 97df31be0fae41ca3017f7ea3f71d5119964d8b7..61aa88400bfdb596ab8c24bc397640c148daad45 100644 (file)
 #include "utils.h"
 #include "gtkutils.h"
 
-#define SMTP_PORT      25
-#if USE_SSL
-#define SSMTP_PORT     465
-#endif
-
 typedef struct _SendProgressDialog     SendProgressDialog;
 
 struct _SendProgressDialog
@@ -65,11 +60,6 @@ struct _SendProgressDialog
        gboolean cancelled;
 };
 
-static gint send_message_local (const gchar *command, FILE *fp);
-
-static gint send_message_smtp  (PrefsAccount *ac_prefs, GSList *to_list,
-                                FILE *fp);
-
 #if USE_SSL
 static SockInfo *send_smtp_open        (const gchar *server, gushort port,
                                 const gchar *domain, gboolean use_smtp_auth,
@@ -206,7 +196,7 @@ gint send_message_queue(const gchar *file)
        return val;
 }
 
-static gint send_message_local(const gchar *command, FILE *fp)
+gint send_message_local(const gchar *command, FILE *fp)
 {
        FILE *pipefp;
        gchar buf[BUFFSIZE];
@@ -276,7 +266,7 @@ static gint send_message_local(const gchar *command, FILE *fp)
        } \
 }
 
-static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
+gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
                              FILE *fp)
 {
        SockInfo *smtp_sock = NULL;
@@ -286,6 +276,7 @@ static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
        gchar buf[BUFFSIZE];
        gushort port;
        gchar *domain;
+       gchar *user = NULL;
        gchar *pass = NULL;
        GSList *cur;
        gint size;
@@ -308,15 +299,30 @@ static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
        domain = ac_prefs->set_domain ? ac_prefs->domain : NULL;
 
        if (ac_prefs->use_smtp_auth) {
-               if (ac_prefs->passwd)
-                       pass = ac_prefs->passwd;
-               else if (ac_prefs->tmp_pass)
-                       pass = ac_prefs->tmp_pass;
-               else {
-                       pass = send_query_password(ac_prefs->smtp_server,
-                                                  ac_prefs->userid);
-                       if (!pass) pass = g_strdup("");
-                       ac_prefs->tmp_pass = pass;
+               if (ac_prefs->smtp_userid) {
+                       user = ac_prefs->smtp_userid;
+                       if(ac_prefs->smtp_passwd)
+                               pass = ac_prefs->smtp_passwd;
+                       else if (ac_prefs->tmp_pass)
+                               pass = ac_prefs->tmp_pass;
+                       else {
+                               pass = send_query_password(ac_prefs->smtp_server,
+                                                          ac_prefs->smtp_userid);
+                               if (!pass) pass = g_strdup("");
+                               ac_prefs->tmp_pass = pass;
+                       }
+               } else {
+                       user = ac_prefs->userid;
+                       if (ac_prefs->passwd) {
+                               pass = ac_prefs->passwd;
+                       } else if (ac_prefs->tmp_pass)
+                               pass = ac_prefs->tmp_pass;
+                       else {
+                               pass = send_query_password(ac_prefs->smtp_server,
+                                                          ac_prefs->userid);
+                               if (!pass) pass = g_strdup("");
+                               ac_prefs->tmp_pass = pass;
+                       }
                }
        }
 
@@ -352,7 +358,7 @@ static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
        GTK_EVENTS_FLUSH();
 
        SEND_EXIT_IF_NOTOK
-               (smtp_from(smtp_sock, ac_prefs->address, ac_prefs->userid,
+               (smtp_from(smtp_sock, ac_prefs->address, user,
                           pass, ac_prefs->use_smtp_auth),
                 "sending MAIL FROM");