403
403
gchar *procmsg_get_message_file_path(MsgInfo *msginfo)
407
405
cm_return_val_if_fail(msginfo != NULL, NULL);
409
if (msginfo->plaintext_file)
410
file = g_strdup(msginfo->plaintext_file);
412
file = folder_item_fetch_msg(msginfo->folder, msginfo->msgnum);
407
return folder_item_fetch_msg(msginfo->folder, msginfo->msgnum);
418
410
gchar *procmsg_get_message_file(MsgInfo *msginfo)
1514
1506
static gint procmsg_send_message_queue_full(const gchar *file, gboolean keep_session, gchar **errstr,
1515
1507
FolderItem *queue, gint msgnum, gboolean *queued_removed)
1517
static HeaderEntry qentry[] = {{"S:", NULL, FALSE},
1509
static HeaderEntry qentry[] = {
1510
{"S:", NULL, FALSE}, /* 0 */
1518
1511
{"SSV:", NULL, FALSE},
1519
1512
{"R:", NULL, FALSE},
1520
1513
{"NG:", NULL, FALSE},
1521
1514
{"MAID:", NULL, FALSE},
1522
{"NAID:", NULL, FALSE},
1515
{"NAID:", NULL, FALSE}, /* 5 */
1523
1516
{"SCF:", NULL, FALSE},
1524
1517
{"RMID:", NULL, FALSE},
1525
1518
{"FMID:", NULL, FALSE},
1526
1519
{"X-Claws-Privacy-System:", NULL, FALSE},
1527
{"X-Claws-Encrypt:", NULL, FALSE},
1520
{"X-Claws-Encrypt:", NULL, FALSE}, /* 10 */
1528
1521
{"X-Claws-Encrypt-Data:", NULL, FALSE},
1529
1522
{"X-Claws-End-Special-Headers:", NULL, FALSE},
1530
1523
{"X-Sylpheed-Privacy-System:", NULL, FALSE},
1531
1524
{"X-Sylpheed-Encrypt:", NULL, FALSE},
1532
{"X-Sylpheed-Encrypt-Data:", NULL, FALSE},
1525
{"X-Sylpheed-Encrypt-Data:", NULL, FALSE}, /* 15 */
1533
1526
{"X-Sylpheed-End-Special-Headers:", NULL, FALSE},
1534
1527
{NULL, NULL, FALSE}};
1542
1535
gchar *savecopyfolder = NULL;
1543
1536
gchar *replymessageid = NULL;
1544
1537
gchar *fwdmessageid = NULL;
1545
gchar *privacy_system = NULL;
1546
gboolean encrypt = FALSE;
1547
gchar *encrypt_data = NULL;
1548
1538
gchar buf[BUFFSIZE];
1550
1540
PrefsAccount *mailac = NULL, *newsac = NULL;
1551
gboolean save_clear_text = TRUE;
1552
gchar *tmp_enc_file = NULL;
1541
gboolean encrypt = FALSE;
1554
1544
cm_return_val_if_fail(file != NULL, -1);
1599
1589
if (fwdmessageid == NULL)
1600
1590
fwdmessageid = g_strdup(p);
1602
case Q_PRIVACY_SYSTEM:
1603
case Q_PRIVACY_SYSTEM_OLD:
1604
if (privacy_system == NULL)
1605
privacy_system = g_strdup(p);
1607
1592
case Q_ENCRYPT:
1608
1593
case Q_ENCRYPT_OLD:
1609
1594
if (p[0] == '1')
1610
1595
encrypt = TRUE;
1612
case Q_ENCRYPT_DATA:
1613
case Q_ENCRYPT_DATA_OLD:
1614
if (encrypt_data == NULL)
1615
encrypt_data = g_strdup(p);
1617
1597
case Q_CLAWS_HDRS:
1618
1598
case Q_CLAWS_HDRS_OLD:
1619
1599
/* end of special headers reached */
1637
if (mailac && mailac->save_encrypted_as_clear_text
1638
&& !mailac->encrypt_to_self)
1639
save_clear_text = TRUE;
1641
save_clear_text = FALSE;
1646
mimeinfo = procmime_scan_queue_file(file);
1647
if (!privacy_encrypt(privacy_system, mimeinfo, encrypt_data)
1648
|| (fp = my_tmpfile()) == NULL
1649
|| procmime_write_mimeinfo(mimeinfo, fp) < 0) {
1652
procmime_mimeinfo_free_all(mimeinfo);
1655
slist_free_strings_full(to_list);
1656
slist_free_strings_full(newsgroup_list);
1657
g_free(savecopyfolder);
1658
g_free(replymessageid);
1659
g_free(fwdmessageid);
1660
g_free(privacy_system);
1661
g_free(encrypt_data);
1663
if (*errstr) g_free(*errstr);
1664
*errstr = g_strdup_printf(_("Couldn't encrypt the email: %s"),
1665
privacy_get_error());
1671
if (!save_clear_text) {
1672
gchar *content = NULL;
1673
FILE *tmpfp = get_tmpfile_in_dir(get_mime_tmp_dir(), &tmp_enc_file);
1677
content = file_read_stream_to_str(fp);
1680
str_write_to_file(content, tmp_enc_file);
1683
g_warning("couldn't get tempfile\n");
1687
procmime_mimeinfo_free_all(mimeinfo);
1693
1615
debug_print("Sending message by mail\n");
1810
1732
/* save message to outbox */
1811
1733
if (mailval == 0 && newsval == 0 && savecopyfolder) {
1814
1734
debug_print("saving sent message...\n");
1816
outbox = folder_find_item_from_identifier(savecopyfolder);
1818
outbox = folder_get_default_outbox();
1820
if (save_clear_text || tmp_enc_file == NULL) {
1736
if (!encrypt || !mailac->save_encrypted_as_clear_text) {
1737
outbox = folder_find_item_from_identifier(savecopyfolder);
1739
outbox = folder_get_default_outbox();
1741
/* Mail was not saved to outbox before encrypting, save it now. */
1821
1742
gboolean saved = FALSE;
1822
1743
*queued_removed = FALSE;
1823
1744
if (queue && msgnum > 0) {
1833
1754
procmsg_msginfo_free(queued_mail);
1836
debug_print("resaving clear text queued mail to sent folder\n");
1757
debug_print("resaving queued mail to sent folder\n");
1837
1758
procmsg_save_to_outbox(outbox, file, TRUE);
1840
debug_print("saving encrpyted queued mail to sent folder\n");
1841
procmsg_save_to_outbox(outbox, tmp_enc_file, FALSE);
1845
if (tmp_enc_file != NULL) {
1846
claws_unlink(tmp_enc_file);
1848
tmp_enc_file = NULL;
1851
1763
if (replymessageid != NULL || fwdmessageid != NULL) {
1852
1764
gchar **tokens;
1853
1765
FolderItem *item;