From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 8B00CD44D for ; Wed, 30 Nov 2022 16:19:50 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6A87020542 for ; Wed, 30 Nov 2022 16:19:20 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 30 Nov 2022 16:19:19 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 5449744099 for ; Wed, 30 Nov 2022 16:19:18 +0100 (CET) Message-ID: Date: Wed, 30 Nov 2022 16:19:16 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Content-Language: en-US To: Dominik Csapak , Proxmox Backup Server development discussion References: <20221129164019.1193392-1-s.sterz@proxmox.com> <16d7b3cb-7887-58c9-6514-9fc18400a78e@proxmox.com> <798cf744-7051-8458-4a3e-67145e7741f8@proxmox.com> From: Stefan Sterz In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.046 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment NICE_REPLY_A -0.258 Looks like a legit reply (A) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup] email_notifications: make html template more valid X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Nov 2022 15:19:50 -0000 On 11/30/22 16:14, Dominik Csapak wrote: > 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 or but start direct with e.g.

> > so maybe just dropping that and directly using the

 here
> would also be ok?
> 

maybe, i can't tell you what will happen though, html emails are weird,
at least to me ^^'

i'll go with what you prefer :)

>>
>> [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 ;)

ill add it if we go with the "keep the full html structure" option
instead of the "
-only" one :)

> 
>>
>>> the correct closing of the tags good though
>>>
>>> 0: https://html.spec.whatwg.org/multipage/semantics.html
>>>
>>>>
>>>> Signed-off-by: Stefan Sterz 
>>>> ---
>>>>    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!(
>>>> -        "
\n{}\n
",
>>>> +        ">>> lang=\"en\">
\n{}\n
", >>>>            handlebars::html_escape(text) >>>>        ); >>>>    >>> >>> >> > >