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);
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 ||
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;
}
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."));
+ if (session->state == SESSION_ERROR) {
+ log_msg =
+ _("Error occurred while sending the message.");
+ err_msg = g_strdup(log_msg);
+ } else if (session->state == SESSION_EOF) {
+ log_msg = _("Connection closed by the remote host.");
+ err_msg = g_strdup(log_msg);
+ }
break;
}
+
+ if (log_msg)
+ log_warning("%s\n", log_msg);
+ if (err_msg) {
+ alertpanel_error_log("%s", err_msg);
+ g_free(err_msg);
+ }
}