if (compose->mode == COMPOSE_REEDIT) {
if (msginfo->inreplyto && *msginfo->inreplyto)
compose->inreplyto = g_strdup(msginfo->inreplyto);
- return 0;
- }
-
- if (msginfo->msgid && *msginfo->msgid)
- compose->inreplyto = g_strdup(msginfo->msgid);
- if (!compose->references) {
- if (msginfo->msgid && *msginfo->msgid) {
- if (msginfo->inreplyto && *msginfo->inreplyto)
- compose->references =
- g_strdup_printf("<%s>\n\t<%s>",
- msginfo->inreplyto,
- msginfo->msgid);
- else
+ if (msginfo->msgid && *msginfo->msgid)
+ compose->msgid = g_strdup(msginfo->msgid);
+ } else {
+ if (msginfo->msgid && *msginfo->msgid)
+ compose->inreplyto = g_strdup(msginfo->msgid);
+
+ if (!compose->references) {
+ if (msginfo->msgid && *msginfo->msgid) {
+ if (msginfo->inreplyto && *msginfo->inreplyto)
+ compose->references =
+ g_strdup_printf("<%s>\n\t<%s>",
+ msginfo->inreplyto,
+ msginfo->msgid);
+ else
+ compose->references =
+ g_strconcat("<", msginfo->msgid, ">",
+ NULL);
+ } else if (msginfo->inreplyto && *msginfo->inreplyto) {
compose->references =
- g_strconcat("<", msginfo->msgid, ">",
+ g_strconcat("<", msginfo->inreplyto, ">",
NULL);
- } else if (msginfo->inreplyto && *msginfo->inreplyto) {
- compose->references =
- g_strconcat("<", msginfo->inreplyto, ">",
- NULL);
+ }
}
}
}
/* Resent-Message-ID */
- if (compose->account->set_domain && compose->account->domain) {
- g_snprintf(buf, sizeof(buf), "%s", compose->account->domain);
- } else if (!strncmp(get_domain_name(), "localhost", strlen("localhost"))) {
- g_snprintf(buf, sizeof(buf), "%s",
- strchr(compose->account->address, '@') ?
- strchr(compose->account->address, '@')+1 :
- compose->account->address);
- } else {
- g_snprintf(buf, sizeof(buf), "%s", "");
- }
-
if (compose->account->gen_msgid) {
- gchar *addr = NULL;
- if (compose->account->msgid_with_addr) {
- addr = compose->account->address;
- }
- generate_msgid(buf, sizeof(buf), addr);
- err |= (fprintf(fp, "Resent-Message-ID: <%s>\n", buf) < 0);
+ gchar *addr = prefs_account_generate_msgid(compose->account);
+ err |= (fprintf(fp, "Resent-Message-ID: <%s>\n", addr) < 0);
if (compose->msgid)
g_free(compose->msgid);
- compose->msgid = g_strdup(buf);
+ compose->msgid = addr;
} else {
compose->msgid = NULL;
}
gchar *from_name = NULL;
FolderItem *outbox;
- if (action == COMPOSE_WRITE_FOR_SEND)
+ if (action == COMPOSE_WRITE_FOR_SEND) {
attach_parts = TRUE;
+ /* We're sending the message, generate a Message-ID
+ * if necessary. */
+ if (compose->msgid == NULL &&
+ compose->account->gen_msgid) {
+ compose->msgid = prefs_account_generate_msgid(compose->account);
+ }
+ }
+
/* create message MimeInfo */
mimemsg = procmime_mimeinfo_new();
mimemsg->type = MIMETYPE_MESSAGE;
}
g_free(chars);
- if (encoding == ENC_8BIT || encoding == ENC_7BIT) {
+ if (prefs_common.rewrite_first_from && (encoding == ENC_8BIT || encoding == ENC_7BIT)) {
if (!strncmp(buf, "From ", sizeof("From ")-1) ||
strstr(buf, "\nFrom ") != NULL) {
encoding = ENC_QUOTED_PRINTABLE;
privacy_system_can_sign(compose->privacy_system)) {
encoding = ENC_QUOTED_PRINTABLE;
}
-
+
+#ifdef G_OS_WIN32
+ debug_print("main text: %Id bytes encoded as %s in %d\n",
+#else
debug_print("main text: %zd bytes encoded as %s in %d\n",
+#endif
strlen(buf), out_codeset, encoding);
/* check for line length limit */
g_free(str);
/* Message-ID */
- if (compose->account->set_domain && compose->account->domain) {
- g_snprintf(buf, sizeof(buf), "%s", compose->account->domain);
- } else if (!strncmp(get_domain_name(), "localhost", strlen("localhost"))) {
- g_snprintf(buf, sizeof(buf), "%s",
- strchr(compose->account->address, '@') ?
- strchr(compose->account->address, '@')+1 :
- compose->account->address);
- } else {
- g_snprintf(buf, sizeof(buf), "%s", "");
- }
-
- if (compose->account->gen_msgid) {
- gchar *addr = NULL;
- if (compose->account->msgid_with_addr) {
- addr = compose->account->address;
- }
- generate_msgid(buf, sizeof(buf), addr);
- g_string_append_printf(header, "Message-ID: <%s>\n", buf);
- if (compose->msgid)
- g_free(compose->msgid);
- compose->msgid = g_strdup(buf);
- } else {
- compose->msgid = NULL;
+ if (compose->msgid != NULL && strlen(compose->msgid) > 0) {
+ g_string_append_printf(header, "Message-ID: <%s>\n",
+ compose->msgid);
}
if (compose->remove_references == FALSE) {
* which unsets it (via focus_out_event callback on compose window). */
manage_window_focus_in(compose->window, NULL, NULL);
- file_list = filesel_select_multiple_files_open(_("Select file"));
+ file_list = filesel_select_multiple_files_open(_("Select file"), NULL);
if (file_list) {
compose_attach_from_list(compose, file_list, TRUE);
GList *file_list;
gint files_inserted = 0;
- file_list = filesel_select_multiple_files_open(_("Select file"));
+ file_list = filesel_select_multiple_files_open(_("Select file"), NULL);
if (file_list) {
GList *tmp;
{
Compose *compose = (Compose *)data;
+#ifdef G_OS_UNIX
+ if (compose->exteditor_tag != -1) {
+ debug_print("ignoring open external editor: external editor still open\n");
+ return;
+ }
+#endif
compose_exec_ext_editor(compose);
}
Compose *compose = (Compose *)user_data;
GList *list, *tmp;
GdkAtom type;
+ guint num_files;
+ gchar *msg;
/* strangely, testing data->type == gdk_atom_intern("text/uri-list", TRUE)
* does not work */
const gchar* ddata = (const gchar *)gtk_selection_data_get_data(data);
list = uri_list_extract_filenames(ddata);
+ num_files = g_list_length(list);
if (list == NULL && strstr(ddata, "://")) {
/* Assume a list of no files, and data has ://, is a remote link */
gchar *tmpdata = g_strstrip(g_strdup(ddata));
}
switch (prefs_common.compose_dnd_mode) {
case COMPOSE_DND_ASK:
- val = alertpanel_full(_("Insert or attach?"),
- _("Do you want to insert the contents of the file(s) "
- "into the message body, or attach it to the email?"),
+ msg = g_strdup_printf(
+ ngettext(
+ "Do you want to insert the contents of the file "
+ "into the message body, or attach it to the email?",
+ "Do you want to insert the contents of the %d files "
+ "into the message body, or attach them to the email?",
+ num_files),
+ num_files);
+ val = alertpanel_full(_("Insert or attach?"), msg,
GTK_STOCK_CANCEL, g_strconcat("+", _("_Insert"), NULL), _("_Attach"),
TRUE, NULL, ALERT_QUESTION, G_ALERTALTERNATE);
+ g_free(msg);
break;
case COMPOSE_DND_INSERT:
val = G_ALERTALTERNATE;
if (msginfo->folder->prefs->enable_default_account)
account = account_find_from_id(msginfo->folder->prefs->default_account);
- if (!account)
- account = msginfo->folder->folder->account;
-
if (!account && msginfo->to && prefs_common.forward_account_autosel) {
gchar *to;
Xstrdup_a(to, msginfo->to, return NULL);
account = account_find_from_address(buf, FALSE);
}
}
+
+ if (!account)
+ account = msginfo->folder->folder->account;
return account;
}