# |
Apr 13th 2021, 20:28 |
kevin.pfeifer |
or something changed in php 8.0 for mailing which i don’t know of |
# |
Apr 13th 2021, 20:27 |
kevin.pfeifer |
either you have some custom php.ini in 7.4 which hasn’t been adopted/converted/copied to php 8.0 |
# |
Apr 13th 2021, 20:26 |
phantomwatson |
And if I run it explicitly under PHP 7.4, the problem goes away. Cool (and thanks for pointing that out!) but _what the hell_. |
# |
Apr 13th 2021, 20:25 |
phantomwatson |
7.4 and 8.0 are both used on this server. This domain was and still is on 7.4, but at some point recently the system default version of PHP was bumped to 8.0. Thaaaaat seems likely related. The command-line script is running under PHP 8. |
# |
Apr 13th 2021, 20:22 |
greg138 |
There hasn't been an update to your version of PHP? |
# |
Apr 13th 2021, 20:20 |
slackebot |
<5bc58feffd2948f09c8dc9051b9630db@muncieevents.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="1d649385e3049e4e717ba26f27a73f0a" Content-Transfer-Encoding: 8bit Message-Id: <E1lWPSX-00001A-Hh@server.cberdata.org> Date: Tue, 13 Apr 2021 16:16:29 -0400 ...``` |
# |
Apr 13th 2021, 20:20 |
phantomwatson |
I don't see anything malformed about that, but it's still being received like this: ```... To: graham@phantomwatson.com Subject: Upcoming Week in Muncie: Tuesday, Apr 13 X-PHP-Originating-Script: 1000:MailTransport.php From: Muncie Events <automailer@muncieevents.com> Return-Path: automailer@MuncieEvents.com Sender: Muncie Events <automailer@MuncieEvents.com> Date: Tue, 13 Apr 2021 20:16:29 +0000 Message-ID: |
# |
Apr 13th 2021, 20:19 |
slackebot |
multipart/alternative; boundary="1d649385e3049e4e717ba26f27a73f0a" Content-Transfer-Encoding: 8bit"``` |
# |
Apr 13th 2021, 20:19 |
phantomwatson |
So at the point where headers are being fed into PHP's `mail()` function, this is the `var_dump()` of the `$headers` string: ```string(375) "From: Muncie Events <automailer@muncieevents.com> Return-Path: automailer@MuncieEvents.com Sender: Muncie Events <automailer@MuncieEvents.com> Date: Tue, 13 Apr 2021 20:16:29 +0000 Message-ID: <5bc58feffd2948f09c8dc9051b9630db@muncieevents.com> MIME-Version: 1.0 Content-Type: |
# |
Apr 13th 2021, 20:18 |
phantomwatson |
Automatically, I mean. |
# |
Apr 13th 2021, 20:18 |
phantomwatson |
If I understand it correctly, it's being yanked out of `app_local.php`. |
# |
Apr 13th 2021, 20:08 |
greg138 |
I'm curious where the return path is coming from. |
# |
Apr 13th 2021, 20:03 |
phantomwatson |
Oh, there's a daily and a weekly version of the emails, but both have the same issue. |
# |
Apr 13th 2021, 20:02 |
greg138 |
And your screen shot before has "Today in" as the subject, not "Upcoming Week in". They are both exhibiting the issue? |
# |
Apr 13th 2021, 20:02 |
phantomwatson |
Set in `app_local.php`. |
# |
Apr 13th 2021, 20:02 |
phantomwatson |
The return-path is being pulled from the `Email.default.returnPath` configuration option, I think. |
# |
Apr 13th 2021, 20:00 |
greg138 |
Hmm, you're not setting the return path anywhere, yet it's in the "bad headers" (ones with a space before them). |
# |
Apr 13th 2021, 19:59 |
kevin.pfeifer |
how about enabling output buffering and checking if something prints somewhere? |
# |
Apr 13th 2021, 19:58 |
phantomwatson |
Good thought, but `app_local.php` looks fine. Nothing before `<?php`. |
# |
Apr 13th 2021, 19:58 |
greg138 |
But the spaces are coming before the header *name*, not the value. |
# |
Apr 13th 2021, 19:57 |
kevin.pfeifer |
since your using the Configure classes here do you have some spaces in your `config/app_local.php` probably? |
# |
Apr 13th 2021, 19:57 |
greg138 |
We must be getting close... |
# |
Apr 13th 2021, 19:56 |
phantomwatson |
I could try ditching the `Mailer` class system and sending emails just with `new Email(); ... send()` to see if that works, but that's not ideal, and I'd like to figure out what suddenly broke these messages. |
# |
Apr 13th 2021, 19:55 |
slackebot |
Week in Muncie: $date") ->setViewVars([ 'events' => $events, 'recipient' => $recipient, 'settingsDisplay' => $this->getSettingsDisplay($recipient), ]) ->setEmailFormat('both') ->setDomain('muncieevents.com'); }``` |
# |
Apr 13th 2021, 19:55 |
phantomwatson |
But nothing about the `Mailer` class code looks unusual. ```public function weekly($recipient, $events) { $this->viewBuilder()->setTemplate('weekly'); $date = (new FrozenTime('now', Configure::read('localTimezone')))->format('l, M j'); $this ->setTo($recipient->email) ->setFrom(Configure::read('automailer_address'), 'Muncie Events') ->setSubject("Upcoming |
# |
Apr 13th 2021, 19:53 |
phantomwatson |
Nope, the ones that work just create an `Email` object and then `->send()` it. |
# |
Apr 13th 2021, 19:52 |
greg138 |
You said there's emails sent from your site that work okay? Do they use the same Mailer class? |
# |
Apr 13th 2021, 19:41 |
kevin.pfeifer |
well then i would look for some strangely encoded strings or whitespace before `<?php` in your custom Mailer.php |
# |
Apr 13th 2021, 19:41 |
phantomwatson |
But I don't see anything in my Mailer class code that seems unusual, or which deviates from what's in the docs. |
# |
Apr 13th 2021, 19:39 |
phantomwatson |
The plot thickens. These emails are only bugged when I use a `Mailer` class, but not when I just create a new `Email` object and `->send()`. |
# |
Apr 13th 2021, 18:56 |
phantomwatson |
Actually, crap, that may have just been an artifact of how I was generating debug output. :( `print_r($headers); echo "\nMESSAGE BELOW\n"; print_r($message); echo "\nEND OF MESSAGE\n";` generates ```Content-Transfer-Encoding: 8bit MESSAGE BELOW --1c2e6618b5d00c393f7043526a0b5fdf Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (actual content)``` |
# |
Apr 13th 2021, 18:50 |
phantomwatson |
_But_, the source of the message that the recipient receives _does_ include this double line break: |
# |
Apr 13th 2021, 18:48 |
phantomwatson |
So it looks like the headers are missing a double-line-break before the gibberish boundary line. |
# |
Apr 13th 2021, 18:47 |
phantomwatson |
What's displayed to the recipient begins with that `--` in `Content-Transfer-Encoding: 8bit--fb8002af4ef885786feebbec6b9b709f` |
# |
Apr 13th 2021, 18:46 |
phantomwatson |
`Content-Transfer-Encoding: 8bit--fb8002af4ef885786feebbec6b9b709f` doesn't look quite right. |
# |
Apr 13th 2021, 18:46 |
phantomwatson |
Then after it's passed through `$this->_headersToString($headers, $eol);`: |
# |
Apr 13th 2021, 18:45 |
phantomwatson |
Hm. Here are some of the contents of the `$headers` array: |
# |
Apr 13th 2021, 18:41 |
kevin.pfeifer |
and it actually replaces `"\r\n", ''` in the headers |
# |
Apr 13th 2021, 18:41 |
kevin.pfeifer |
https://github.com/cakephp/cakephp/blob/master/src/Mailer/Transport/MailTransport.php#L91 |
# |
Apr 13th 2021, 18:41 |
kevin.pfeifer |
the default Mailt Transporter just has a wrapper for the default php `mail` function |
# |
Apr 13th 2021, 18:35 |
greg138 |
Well then, whatever the equivalent is for the Mail transport... |