gchar *chars;
gchar *buf;
const gchar *out_codeset;
- EncodingType encoding;
+ EncodingType encoding = ENC_UNKNOWN;
MimeInfo *mimemsg, *mimetext;
gint line;
const gchar *src_codeset = CS_INTERNAL;
if (!out_codeset && is_ascii_str(chars)) {
out_codeset = CS_US_ASCII;
+ } else if (prefs_common.outgoing_fallback_to_ascii &&
+ is_ascii_str(chars)) {
+ out_codeset = CS_US_ASCII;
+ encoding = ENC_7BIT;
}
if (!out_codeset) {
codeconv_set_strict(FALSE);
}
- if (prefs_common.encoding_method == CTE_BASE64)
- encoding = ENC_BASE64;
- else if (prefs_common.encoding_method == CTE_QUOTED_PRINTABLE)
- encoding = ENC_QUOTED_PRINTABLE;
- else if (prefs_common.encoding_method == CTE_8BIT)
- encoding = ENC_8BIT;
- else
- encoding = procmime_get_encoding_for_charset(out_codeset);
+ if (encoding == ENC_UNKNOWN) {
+ if (prefs_common.encoding_method == CTE_BASE64)
+ encoding = ENC_BASE64;
+ else if (prefs_common.encoding_method == CTE_QUOTED_PRINTABLE)
+ encoding = ENC_QUOTED_PRINTABLE;
+ else if (prefs_common.encoding_method == CTE_8BIT)
+ encoding = ENC_8BIT;
+ else
+ encoding = procmime_get_encoding_for_charset(out_codeset);
+ }
debug_print("src encoding = %s, out encoding = %s, transfer encoding = %s\n",
src_codeset, out_codeset, procmime_get_encoding_str(encoding));
NULL, NULL, NULL},
{"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
NULL, NULL, NULL},
+ {"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
+ NULL, NULL, NULL},
{"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
P_BOOL, NULL, NULL, NULL},
GtkWidget *checkbtn_senddialog;
GtkWidget *combobox_charset;
GtkWidget *combobox_encoding_method;
+ GtkWidget *checkbtn_outgoing_fallback_to_ascii;
} SendPage;
static gchar * prefs_common_charset_set_data_from_optmenu(GtkWidget *widget)
GtkWidget *vbox1;
GtkWidget *vbox2;
GtkWidget *checkbtn_savemsg;
+ GtkWidget *checkbtn_outgoing_fallback_to_ascii;
GtkWidget *label_outcharset;
GtkWidget *combobox_charset;
GtkListStore *optmenu;
PACK_CHECK_BUTTON(vbox2, checkbtn_senddialog,
_("Show send dialog"));
- table = gtk_table_new(2, 2, FALSE);
+ table = gtk_table_new(2, 3, FALSE);
gtk_widget_show(table);
gtk_container_add (GTK_CONTAINER (vbox1), table);
gtk_table_set_row_spacings(GTK_TABLE(table), 4);
COMBOBOX_ADD(optmenu, "quoted-printable", CTE_QUOTED_PRINTABLE);
COMBOBOX_ADD(optmenu, "8bit", CTE_8BIT);
+ checkbtn_outgoing_fallback_to_ascii = gtk_check_button_new_with_label(
+ _("Fallback to 7bit US-ASCII when possible"));
+ gtk_widget_show(checkbtn_outgoing_fallback_to_ascii);
+ gtk_table_attach(GTK_TABLE(table), checkbtn_outgoing_fallback_to_ascii,
+ 0, 3, 3, 4,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_outgoing_fallback_to_ascii),
+ prefs_common.outgoing_fallback_to_ascii);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_savemsg),
prefs_common.savemsg);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_confirm_send_queued_messages),
prefs_send->window = GTK_WIDGET(window);
prefs_send->checkbtn_savemsg = checkbtn_savemsg;
+ prefs_send->checkbtn_outgoing_fallback_to_ascii = checkbtn_outgoing_fallback_to_ascii;
prefs_send->checkbtn_confirm_send_queued_messages = checkbtn_confirm_send_queued_messages;
prefs_send->checkbtn_never_send_retrcpt = checkbtn_never_send_retrcpt;
prefs_send->checkbtn_senddialog = checkbtn_senddialog;
prefs_common.savemsg = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_savemsg));
+ prefs_common.outgoing_fallback_to_ascii = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(page->checkbtn_outgoing_fallback_to_ascii));
prefs_common.confirm_send_queued_messages = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_confirm_send_queued_messages));
prefs_common.never_send_retrcpt = gtk_toggle_button_get_active(