[Tickets #14988] Re: ActiveSync mail setting From: header

noreply at bugs.horde.org noreply at bugs.horde.org
Sun Jun 7 17:40:03 UTC 2020


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: https://bugs.horde.org/ticket/14988
------------------------------------------------------------------------------
  Ticket             | 14988
  Updated By         | Michael Rubinsky <mrubinsk at horde.org>
  Summary            | ActiveSync mail setting From: header
  Queue              | Synchronization
  Version            | FRAMEWORK_5_2
  Type               | Bug
  State              | Feedback
  Priority           | 1. Low
  Milestone          |
  Patch              |
  Owners             |
------------------------------------------------------------------------------


Michael Rubinsky <mrubinsk at horde.org> (2020-06-07 17:40) wrote:

>> Does the "Default Identity" entry have a "The default e-mail address
>> to use with this identity:" value set?
>>
>> Other things to try:
>> Use the administrative sql shell and execute:
>>
>> SELECT * FROM horde_prefs WHERE pref_name='activesync_identity';
>>
>> If you have something other than "use horde default" set in the
>> prefs, this will be some number. Probably '0' for the original
>> default identity.
>>
>>
>> Then, in the administrative PHP shell:
>>
>> ident =
>> $injector->getInstance('Horde_Core_Factory_Identity')->create('your_username_here');
>> var_dump($ident->getValue('from_addr', x);  // replace 'x' with the
>> number returned from the query above.
>>
>> This should output the email address that activesync will use as the
>> From address of outgoing email.
>
> Yes, the default identity has an e-mail address set.
>
> SELECT * FROM horde_prefs WHERE pref_name='activesync_identity';
>
> in the SQL Shell delivers:
>
> pref_uid 	pref_scope 	pref_name 	pref_value
> <username> 	horde 	activesync_identity 	0
>
> $ident=$injector->getInstance('Horde_Core_Factory_Identity')->create('<username>');
> var_dump($ident->getValue('from_addr',0));
>
> in the PHP shell correctly delivers the e-mail address set for the  
> default identity. Still, this address is not set in the "From"  
> header when sending messages via ActiveSync. Here an excerpt from  
> Core/ActiveSync/Mail.php:
>
>     public function setRawMessage(Horde_ActiveSync_Rfc822 $raw)
>     {
>         $this->_headers = $raw->getHeaders();
>
>         // Attempt to always use the identity's From address, but fall back
>   	// to the device's sent value if it's not present.
>         if ($from = $this->_getIdentityFromAddress()) {
>             $this->_headers->removeHeader('From');
>             $this->_headers->addHeader('From', $from);
>         }
>
>         // Reply-To?
>   	if ($replyto = $this->_getReplyToAddress()) {
>             $this->_headers->addHeader('Reply-To', $replyto);
>         }
>
>         $this->_raw = $raw;
>     }
>
> The first "if" seems to fail so the "From" header is not removed and  
> set to the default identity. How can I debug that one? Thanks for  
> any help.

If that if is failing, then you need to figure out why  
_getIdentityFromAddress() is returning an empty value.  Use some debug  
logging in that method with Horde::debug() as so:

     protected function _getIdentityFromAddress()
     {
         global $prefs;

         $ident = $GLOBALS['injector']
             ->getInstance('Horde_Core_Factory_Identity')
             ->create($this->_user);

         $as_ident = $prefs->getValue('activesync_identity');
         $name = $ident->getValue('fullname', $as_ident == 'horde' ?  
$prefs->getValue('default_identity') :  
$prefs->getValue('activesync_identity'));
         $from_addr = $ident->getValue('from_addr', $as_ident ==  
'horde' ? $prefs->getValue('default_identity') :  
$prefs->getValue('activesync_identity'));

        // ADD LOGGING
       Horde::debug($this->_user);  // This should output the Horde username.
       Horde::debug($from_addr);   // This should output the address  
you expect. If it doesn't, it's probably not the identity you think it  
is.
       Horde::debug($name);          // This should ouput the human  
readable username configured in the identity.


         if (empty($from_addr)) {
             return;
         }
         $rfc822 = new Horde_Mail_Rfc822_Address($from_addr);
         $rfc822->personal = $name;

         // ADD LOGGING
        Horde::debug($rfc822->encoded);  // If this is empty, probably  
something wrong with the format of the email address.

         return $rfc822->encoded;
     }


The log entries will be written to a file called horde_debug.txt  
located in your system's temporary directory (or the temp directory  
configured in Horde, if different).







More information about the bugs mailing list