Disable sending email receipt from logged in contact ID / activity source contact
authorMatthew Wire <devel@mrwire.co.uk>
Sun, 17 Dec 2017 09:56:00 +0000 (18:56 +0900)
committerMatthew Wire <devel@mrwire.co.uk>
Fri, 12 Jan 2018 11:40:53 +0000 (18:40 +0700)
CRM/Case/BAO/Case.php
CRM/Core/BAO/Domain.php

index 5daee0cb33aae81874b01e75dc6888f62e17d83b..ed31f325a319e6c46fe16adedbe4e38a99b53741 100644 (file)
@@ -3196,7 +3196,9 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
   public static function getReceiptFrom($activityID) {
     $name = $address = NULL;
 
-    if (!empty($activityID)) {
+    if (!empty($activityID) && (Civi::settings()->get('allow_mail_from_logged_in_contact'))) {
+      // This breaks SPF/DMARC if email is sent from an email address that the server is not authorised to send from.
+      //    so we can disable this behaviour with the "allow_mail_from_logged_in_contact" setting.
       // There is always a 'Added by' contact for a activity,
       //  so we can safely use ActivityContact.Getvalue API
       $sourceContactId = civicrm_api3('ActivityContact', 'getvalue', array(
index 85235802dee5ddca464745ef11e47c2762291e55..9994323a7d6e76683e5eaafd4bf5f3b8e0bba740 100644 (file)
@@ -303,9 +303,14 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain {
     if (!empty($domain['domain_email'])) {
       return array($domain['name'], $domain['domain_email']);
     }
-    $userID = CRM_Core_Session::singleton()->getLoggedInContactID();
     $userName = '';
     $userEmail = '';
+
+    if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) {
+      return array($userName, $userEmail);
+    }
+
+    $userID = CRM_Core_Session::singleton()->getLoggedInContactID();
     if (!empty($userID)) {
       list($userName, $userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($userID);
     }