Skip to content
This repository has been archived by the owner on May 16, 2018. It is now read-only.

Pass raw headers from imap storage as "raw" when creating a message #605

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jaspernbrouwer
Copy link

Due to the changes related to ZF2015-04, some messages that are read from imap throw an "Invalid header value detected" exception.

Zend_Mail_Storage_Imap::getMessage() instantiates a new Zend_Mail_Message with an array of parameters. When these parameters contain the key raw, all occurrences of \n not preceded with \r are replaced with \r\n in its value.

Next Zend_Mail_Part will use Zend_Mime_Decode::splitMessage to turn the string into an array of headers, which is later validated.

But:

Zend_Mail_Storage_Imap::getMessage() doesn't use the key raw, but uses headers in stead. In this case the replace of \n to \r\n doesn't happen. The result is that headers like these will throw the "Invalid header value detected" exception:

Content-Disposition: attachment; filename=
    "=?iso-8859-1?Q?hiding-real-file-name?="

The \n will be seen as invalid.

Fix:

This PR fixes this issue by using raw in stead of headers.

@froschdesign
Copy link
Member

ping @weierophinney

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants