aboutsummaryrefslogtreecommitdiffstats
path: root/imap.c
diff options
context:
space:
mode:
authorMatthias Andree <matthias.andree@gmx.de>2011-05-03 15:37:46 +0200
committerMatthias Andree <matthias.andree@gmx.de>2011-05-03 15:37:46 +0200
commite8c5c8ec32a4e636b7b4fb164bdc999eb63bd504 (patch)
tree406e5ca532ccf12f5b8476663f5ae5ebf77c5bb6 /imap.c
parent81242009035395b10cca2a23a7ba7e85cc6d3d76 (diff)
downloadfetchmail-e8c5c8ec32a4e636b7b4fb164bdc999eb63bd504.tar.gz
fetchmail-e8c5c8ec32a4e636b7b4fb164bdc999eb63bd504.tar.bz2
fetchmail-e8c5c8ec32a4e636b7b4fb164bdc999eb63bd504.zip
Add FETCHMAIL_IMAP_DELETED_REMAINS_UNSEEN env' var.
Requested by Jonathan Buschmann, to suppress read-notifications on servers such as MS Exchange or HP OpenMail.
Diffstat (limited to 'imap.c')
-rw-r--r--imap.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/imap.c b/imap.c
index 1364027f..86d1bfea 100644
--- a/imap.c
+++ b/imap.c
@@ -1311,6 +1311,22 @@ static int imap_delete(int sock, struct query *ctl, int number)
/* set delete flag for given message */
{
int ok;
+ /* Select which flags to set on message deletion: */
+ const char delflags_seen[] = "\\Seen \\Deleted";
+ const char delflags_unseen[] = "\\Deleted";
+ static const char *delflags;
+ /* Which environment variable to look for: */
+ const char dis_env[] = "FETCHMAIL_IMAP_DELETED_REMAINS_UNSEEN";
+
+ if (!delflags) {
+ char *tmp;
+ if ((tmp = getenv(dis_env)) != NULL && *tmp) {
+ delflags = delflags_unseen;
+ } else {
+ /* DEFAULT since many fetchmail versions <= 6.3.X */
+ delflags = delflags_seen;
+ }
+ }
(void)ctl;
/* expunges change the fetch numbers */
@@ -1320,17 +1336,18 @@ static int imap_delete(int sock, struct query *ctl, int number)
* Use SILENT if possible as a minor throughput optimization.
* Note: this has been dropped from IMAP4rev1.
*
- * We set Seen because there are some IMAP servers (notably HP
- * OpenMail) that do message-receipt DSNs, but only when the seen
- * bit is set. This is the appropriate time -- we get here right
+ * We set \Seen because there are some IMAP servers (notably HP
+ * OpenMail and MS Exchange) do message-receipt DSNs,
+ * but only when the seen bit gets set.
+ * This is the appropriate time -- we get here right
* after the local SMTP response that says delivery was
* successful.
*/
if ((ok = gen_transact(sock,
imap_version == IMAP4
- ? "STORE %d +FLAGS.SILENT (\\Seen \\Deleted)"
- : "STORE %d +FLAGS (\\Seen \\Deleted)",
- number)))
+ ? "STORE %d +FLAGS.SILENT (%s)"
+ : "STORE %d +FLAGS (%s)",
+ number, delflags)))
return(ok);
else
deletions++;