[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kmail-devel
Subject:    [Bug 91252] MDNs are not sent
From:       Christian Schaarschmidt <schaarsc () gmx ! de>
Date:       2007-04-25 19:18:52
Message-ID: 20070425191852.3799.qmail () ktown ! kde ! org
[Download RAW message or body]

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=91252         
schaarsc gmx de changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From schaarsc gmx de  2007-04-25 21:18 -------
SVN commit 658035 by schaarsc:

port 630582
in KMime::MDN::AutomaticAction mode ignore MDN user settings
fake header fields if missing and remove them later.
BUG:91252


 M  +18 -0     kmfilteraction.cpp  
 M  +23 -20    kmmessage.cpp  


--- branches/KDE/3.5/kdepim/kmail/kmfilteraction.cpp #658034:658035
 @ -115,11 +115,29  @
 void KMFilterAction::sendMDN( KMMessage * msg, KMime::MDN::DispositionType d,
                               const QValueList<KMime::MDN::DispositionModifier> & m ) {
   if ( !msg ) return;
+
+  /* createMDN requires Return-Path and Disposition-Notification-To
+   * if it is not set in the message we assume that the notification should go to the
+   * sender
+   */
+  const QString returnPath = msg->headerField( "Return-Path" );
+  const QString dispNoteTo = msg->headerField( "Disposition-Notification-To" );
+  if ( returnPath.isEmpty() )
+    msg->setHeaderField( "Return-Path", msg->from() );
+  if ( dispNoteTo.isEmpty() )
+    msg->setHeaderField( "Disposition-Notification-To", msg->from() );
+
   KMMessage * mdn = msg->createMDN( KMime::MDN::AutomaticAction, d, false, m );
   if ( mdn && !kmkernel->msgSender()->send( mdn, KMail::MessageSender::SendLater ) ) {
     kdDebug(5006) << "KMFilterAction::sendMDN(): sending failed." << endl;
     //delete mdn;
   }
+
+  //restore orignial header
+  if ( returnPath.isEmpty() )
+    msg->removeHeaderField( "Return-Path" );
+  if ( dispNoteTo.isEmpty() )
+    msg->removeHeaderField( "Disposition-Notification-To" );
 }
 
 
--- branches/KDE/3.5/kdepim/kmail/kmmessage.cpp #658034:658035
 @ -1435,27 +1435,30  @
     s = MDN::SentManually;
   }
 
-  if ( mode == 1 ) { // ask
-    if ( !allowGUI ) return 0; // don't setMDNSentState here!
-    mode = requestAdviceOnMDN( "mdnNormalAsk" );
-    s = MDN::SentManually; // asked user
-  }
+  if ( a != KMime::MDN::AutomaticAction ) { 
+    //TODO: only ingore user settings for AutomaticAction if requested 
+    if ( mode == 1 ) { // ask
+      if ( !allowGUI ) return 0; // don't setMDNSentState here!
+      mode = requestAdviceOnMDN( "mdnNormalAsk" );
+      s = MDN::SentManually; // asked user
+    }
 
-  switch ( mode ) {
-  case 0: // ignore:
-    setMDNSentState( KMMsgMDNIgnore );
-    return 0;
-  default:
-  case 1:
-    kdFatal(5006) << "KMMessage::createMDN(): The \"ask\" mode should "
-		  << "never appear here!" << endl;
-    break;
-  case 2: // deny
-    d = MDN::Denied;
-    m.clear();
-    break;
-  case 3:
-    break;
+    switch ( mode ) {
+      case 0: // ignore:
+        setMDNSentState( KMMsgMDNIgnore );
+        return 0;
+      default:
+      case 1:
+        kdFatal(5006) << "KMMessage::createMDN(): The \"ask\" mode should "
+                                                  << "never appear here!" << endl;
+        break;
+      case 2: // deny
+        d = MDN::Denied;
+        m.clear();
+        break;
+      case 3:
+        break;
+    }
   }
_______________________________________________
KMail developers mailing list
KMail-devel@kde.org
https://mail.kde.org/mailman/listinfo/kmail-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic