#include "procheader.h"
#include "account.h"
#include "progressdialog.h"
+#include "statusbar.h"
#include "inputdialog.h"
#include "alertpanel.h"
#include "manage_window.h"
#include "utils.h"
#include "gtkutils.h"
-#include "statusbar.h"
#include "inc.h"
#include "log.h"
val = send_message_local(ac_prefs->mail_command, fp);
fclose(fp);
return val;
- }
- else if (prefs_common.use_extsend && prefs_common.extsend_cmd) {
- val = send_message_local(prefs_common.extsend_cmd, fp);
- fclose(fp);
- return val;
- }
- else {
+ } else {
val = send_message_smtp(ac_prefs, to_list, fp);
fclose(fp);
if (ac_prefs->use_smtp_auth) {
smtp_session->forced_auth_type = ac_prefs->smtp_auth_type;
-
- if (ac_prefs->smtp_userid) {
+ if (ac_prefs->smtp_userid && strlen(ac_prefs->smtp_userid)) {
smtp_session->user = g_strdup(ac_prefs->smtp_userid);
if (ac_prefs->smtp_passwd)
smtp_session->pass =
port = ac_prefs->set_smtpport ? ac_prefs->smtpport :
ac_prefs->ssl_smtp == SSL_TUNNEL ? SSMTP_PORT : SMTP_PORT;
session->ssl_type = ac_prefs->ssl_smtp;
+ if (ac_prefs->ssl_smtp != SSL_NONE)
+ session->nonblocking = ac_prefs->use_nonblocking_ssl;
#else
port = ac_prefs->set_smtpport ? ac_prefs->smtpport : SMTP_PORT;
#endif
debug_print("send_message_smtp(): begin event loop\n");
- while (session->state != SESSION_DISCONNECTED &&
- session->state != SESSION_ERROR &&
- dialog->cancelled == FALSE)
+ while (session_is_connected(session) && dialog->cancelled == FALSE)
gtk_main_iteration();
if (SMTP_SESSION(session)->error_val == SM_AUTHFAIL) {
}
ret = -1;
} else if (session->state == SESSION_ERROR ||
+ session->state == SESSION_EOF ||
+ session->state == SESSION_TIMEOUT ||
SMTP_SESSION(session)->state == SMTP_ERROR ||
SMTP_SESSION(session)->error_val != SM_OK)
ret = -1;
session_destroy(session);
send_progress_dialog_destroy(dialog);
+ statusbar_pop_all();
statusbar_verbosity_set(FALSE);
return ret;
}
case SMTP_HELO:
g_snprintf(buf, sizeof(buf), _("Sending HELO..."));
state_str = _("Authenticating");
+ statusbar_print_all(_("Sending message..."));
break;
case SMTP_EHLO:
g_snprintf(buf, sizeof(buf), _("Sending EHLO..."));
state_str = _("Authenticating");
+ statusbar_print_all(_("Sending message..."));
break;
case SMTP_AUTH:
g_snprintf(buf, sizeof(buf), _("Authenticating..."));
g_snprintf(buf, sizeof(buf), _("Sending message (%d / %d bytes)"),
cur_len, total_len);
progress_dialog_set_label(dialog->dialog, buf);
- progress_dialog_set_percentage
+ progress_dialog_set_fraction
(dialog->dialog, (gfloat)cur_len / (gfloat)total_len);
return 0;
progress = progress_dialog_create();
gtk_window_set_title(GTK_WINDOW(progress->window),
_("Sending message"));
- gtk_signal_connect(GTK_OBJECT(progress->cancel_btn), "clicked",
- GTK_SIGNAL_FUNC(send_cancel_button_cb), dialog);
- gtk_signal_connect(GTK_OBJECT(progress->window), "delete_event",
- GTK_SIGNAL_FUNC(gtk_true), NULL);
+ g_signal_connect(G_OBJECT(progress->cancel_btn), "clicked",
+ G_CALLBACK(send_cancel_button_cb), dialog);
+ g_signal_connect(G_OBJECT(progress->window), "delete_event",
+ G_CALLBACK(gtk_true), NULL);
gtk_window_set_modal(GTK_WINDOW(progress->window), TRUE);
manage_window_set_transient(GTK_WINDOW(progress->window));
- progress_dialog_set_value(progress, 0.0);
+ progress_dialog_get_fraction(progress);
if (prefs_common.send_dialog_mode == SEND_DIALOG_ALWAYS) {
gtk_widget_show_now(progress->window);
static void send_put_error(Session *session)
{
gchar *msg;
+ gchar *log_msg = NULL;
+ gchar *err_msg = NULL;
msg = SMTP_SESSION(session)->error_msg;
switch (SMTP_SESSION(session)->error_val) {
case SM_ERROR:
case SM_UNRECOVERABLE:
+ log_msg = _("Error occurred while sending the message.");
if (msg)
- alertpanel_error_log
+ err_msg = g_strdup_printf
(_("Error occurred while sending the message:\n%s"),
msg);
else
- alertpanel_error_log
- (_("Error occurred while sending the message."));
+ err_msg = g_strdup(log_msg);
break;
case SM_AUTHFAIL:
+ log_msg = _("Authentication failed.");
if (msg)
- alertpanel_error_log
+ err_msg = g_strdup_printf
(_("Authentication failed:\n%s"), msg);
else
- alertpanel_error_log
- (_("Authentication failed."));
+ err_msg = g_strdup(log_msg);
+ break;
default:
- if (session->state == SESSION_ERROR)
- alertpanel_error_log
- (_("Error occurred while sending the message."));
+ switch (session->state) {
+ case SESSION_ERROR:
+ log_msg =
+ _("Error occurred while sending the message.");
+ err_msg = g_strdup(log_msg);
+ break;
+ case SESSION_EOF:
+ log_msg = _("Connection closed by the remote host.");
+ err_msg = g_strdup(log_msg);
+ break;
+ case SESSION_TIMEOUT:
+ log_msg = _("Session timed out.");
+ err_msg = g_strdup(log_msg);
+ break;
+ default:
+ break;
+ }
break;
}
+
+ if (log_msg)
+ log_warning("%s\n", log_msg);
+ if (err_msg) {
+ alertpanel_error_log("%s", err_msg);
+ g_free(err_msg);
+ }
}