[pbs-devel] [PATCH proxmox-backup] email_notifications: make html template more valid

Dominik Csapak d.csapak at proxmox.com
Wed Nov 30 16:14:51 CET 2022


On 11/30/22 16:02, Stefan Sterz wrote:
> On 11/30/22 15:26, Dominik Csapak wrote:
>> some thoughts:
>>
>> i don't think 'more valid' is possible, either the markup is valid or not
>>
> 
> fair, but entirely valid html in emails is .. interesting. for example,
> it would be nice to add a doctype, but from what i found i am not 100%
> certain that all email clients can handle it well (e.g. outlook 2019
> can't handle the html 5 doctype apparently and ignores it [1]).
> 
> it seems that a common practice is to use an older html 4 doctype,
> though [2].

i checked my personal inbox for html mails, and i found everything from
html4/5 doctype, to no doctype, and even many mails that do not even
declare <html> or <body> but start direct with e.g. <p>

so maybe just dropping that and directly using the <pre> here
would also be ok?

> 
> [1]: https://www.caniemail.com/search/?s=doctype
> [2]: https://stackoverflow.com/questions/34319889/doctype-for-html-email
> 
>> On 11/29/22 17:40, Stefan Sterz wrote:
>>> some webmail interfaces may behave unexpectedly if the html is
>>> invalid. thus, close tags and declare a language.
>>
>> which webmail interfaces? and according to whom is the old invalid and
>> the new valid?
>>
> 
> well i checked it against w3's nu validator [3]. i started out with
> something the validator was happy with and then slowly removed things i
> wasn't certain would render correctly due to html mail weirdness. lost
> the doctype, because see above. lost the title, because apparently
> android 4.4 used it in notifications. so if you used it for e.g. the
> subject, in notifications the subject would display twice? couldn't
> confirm that, but i thought it would be inconvenient.

yeah in the html spec it says that when there is a seperate
'title' in the document (e.g. in mails) one can omit the title

as for the doctype, i also could not really find any resource
that would confirm the need for it in mails. when it renders
correctly on (most) clients without though, it's fine to omit imo

> 
> the last part that valid html requires is a character encoding, but that
> should be set in emails via the `Content-Type` header. so i wasn't sure
> if it makes sense to add it to the html too.
> 
> [3]: https://validator.w3.org/nu/#file
> 
>> i checked the html spec of the whatwg[0] and it seems to me that
>> empty tags ('head' too) can be omitted
>>
> 
> true, sorry, should have removed it when removing the title.
> 
>> also the 'lang' attribute is only recommended, not required
>>
> yes, however, why not follow the recommendation? sorry maybe i am
> missing something super obvious but is there are good reason? the
> reasoning behind the recommendation is accessibility, making it easier
> for speech synthesis to pick up the right intonation.

true, but it has nothing to do with validity, so it would
at least deserve a sentences in the commit message ;)

> 
>> the correct closing of the tags good though
>>
>> 0: https://html.spec.whatwg.org/multipage/semantics.html
>>
>>>
>>> Signed-off-by: Stefan Sterz <s.sterz at proxmox.com>
>>> ---
>>>    src/server/email_notifications.rs | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/src/server/email_notifications.rs
>>> b/src/server/email_notifications.rs
>>> index b3298cf9..378e805e 100644
>>> --- a/src/server/email_notifications.rs
>>> +++ b/src/server/email_notifications.rs
>>> @@ -294,7 +294,7 @@ fn send_job_status_mail(email: &str, subject:
>>> &str, text: &str) -> Result<(), Er
>>>        // Note: OX has serious problems displaying text mails,
>>>        // so we include html as well
>>>        let html = format!(
>>> -        "<html><body><pre>\n{}\n<pre>",
>>> +        "<html
>>> lang=\"en\"><head></head><body><pre>\n{}\n</pre></body></html>",
>>>            handlebars::html_escape(text)
>>>        );
>>>    
>>
>>
> 






More information about the pbs-devel mailing list