[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