# [PATCH] post-receive-email: Set content-type and encoding in generated mail

5 messages from 2009-07-29 to 2009-07-31. Participants: Fabian Emmes, Teemu Likonen, Jeff King.
Thread: https://gitlist.dev/t/20278

## Fabian Emmes, 2009-07-29 13:48

Subject: [PATCH] post-receive-email: Set content-type and encoding in generated mail
Message-ID: <1248875304-13167-1-git-send-email-emmes@informatik.rwth-aachen.de>
URL: https://gitlist.dev/e/1248875304-13167-1-git-send-email-emmes%40informatik.rwth-aachen.de

```
Add proper content-type header to mails generated by post-receive-email, as
suggested by Alexander Gerasiov in
http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg588535.html

Signed-off-by: Fabian Emmes <emmes@informatik.rwth-aachen.de>
---
 contrib/hooks/post-receive-email |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
index 2a66063..0c50155 100755
--- a/contrib/hooks/post-receive-email
+++ b/contrib/hooks/post-receive-email
@@ -197,6 +197,7 @@ generate_email_header()
 	cat <<-EOF
 	To: $recipients
 	Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
+	Content-Type: text/plain; charset=utf-8
 	X-Git-Refname: $refname
 	X-Git-Reftype: $refname_type
 	X-Git-Oldrev: $oldrev
-- 
1.6.3.1.9.g95405b

```

## Teemu Likonen, 2009-07-29 14:00

Subject: Re: [PATCH] post-receive-email: Set content-type and encoding in generated mail
Message-ID: <87tz0vwpvc.fsf@iki.fi>
URL: https://gitlist.dev/e/87tz0vwpvc.fsf%40iki.fi
In-Reply-To: <1248875304-13167-1-git-send-email-emmes@informatik.rwth-aachen.de>

```
On 2009-07-29 15:48 (+0200), Fabian Emmes wrote:

> Add proper content-type header to mails generated by post-receive-email, as
> suggested by Alexander Gerasiov in
> http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg588535.html
>
> Signed-off-by: Fabian Emmes <emmes@informatik.rwth-aachen.de>
> ---
>  contrib/hooks/post-receive-email |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
> index 2a66063..0c50155 100755
> --- a/contrib/hooks/post-receive-email
> +++ b/contrib/hooks/post-receive-email
> @@ -197,6 +197,7 @@ generate_email_header()
>  	cat <<-EOF
>  	To: $recipients
>  	Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
> +	Content-Type: text/plain; charset=utf-8
>  	X-Git-Refname: $refname
>  	X-Git-Reftype: $refname_type
>  	X-Git-Oldrev: $oldrev

That's not complete. You need all these:

    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit

```

## Jeff King, 2009-07-29 14:46

Subject: Re: [PATCH] post-receive-email: Set content-type and encoding in generated mail
Message-ID: <20090729144610.GA5060@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090729144610.GA5060%40coredump.intra.peff.net
In-Reply-To: <1248875304-13167-1-git-send-email-emmes@informatik.rwth-aachen.de>

```
On Wed, Jul 29, 2009 at 03:48:24PM +0200, Fabian Emmes wrote:

> --- a/contrib/hooks/post-receive-email
> +++ b/contrib/hooks/post-receive-email
> @@ -197,6 +197,7 @@ generate_email_header()
>  	cat <<-EOF
>  	To: $recipients
>  	Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
> +	Content-Type: text/plain; charset=utf-8
>  	X-Git-Refname: $refname
>  	X-Git-Reftype: $refname_type
>  	X-Git-Oldrev: $oldrev

Shouldn't this be $(git config i18n.logOutputEncoding), since you will
be inserting the output of git rev-list into the mail?

And as Teemu mentioned, you need a mime-version and a transfer-encoding
header, as well.

So maybe (totally untested):

---
diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
index 2a66063..0c1c6ad 100755
--- a/contrib/hooks/post-receive-email
+++ b/contrib/hooks/post-receive-email
@@ -192,11 +192,16 @@ generate_email()
 
 generate_email_header()
 {
+	encoding=`git config i18n.logOutputEncoding`
+	test -z "$encoding" && encoding=utf-8
 	# --- Email (all stdout will be the email)
 	# Generate header
 	cat <<-EOF
 	To: $recipients
 	Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
+	MIME-Version: 1.0
+	Content-Type: text/plain; charset=$encoding
+	Content-Transfer-Encoding: 8bit
 	X-Git-Refname: $refname
 	X-Git-Reftype: $refname_type
 	X-Git-Oldrev: $oldrev

```

## Fabian Emmes, 2009-07-30 08:02

Subject: Re: [PATCH] post-receive-email: Set content-type and encoding in generated mail
Message-ID: <20090730080206.GR31428@hebe.informatik.RWTH-Aachen.DE>
URL: https://gitlist.dev/e/20090730080206.GR31428%40hebe.informatik.RWTH-Aachen.DE
In-Reply-To: <20090729144610.GA5060@coredump.intra.peff.net>

```
Hi,

thanks Teemu and Jeff for correcting the errors. Indeed I assumed that
git log would always output UTF-8 and a "Content-Type" header would be
valid on its own. The patch of Jeff solves my problem. I tested the
results in mutt, kmail and thunderbird.

Regards,
Fabian

On 29. Jul, 10:46, Jeff King wrote:
> On Wed, Jul 29, 2009 at 03:48:24PM +0200, Fabian Emmes wrote:
> 
> > --- a/contrib/hooks/post-receive-email
> > +++ b/contrib/hooks/post-receive-email
> > @@ -197,6 +197,7 @@ generate_email_header()
> >  	cat <<-EOF
> >  	To: $recipients
> >  	Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
> > +	Content-Type: text/plain; charset=utf-8
> >  	X-Git-Refname: $refname
> >  	X-Git-Reftype: $refname_type
> >  	X-Git-Oldrev: $oldrev
> 
> Shouldn't this be $(git config i18n.logOutputEncoding), since you will
> be inserting the output of git rev-list into the mail?
> 
> And as Teemu mentioned, you need a mime-version and a transfer-encoding
> header, as well.
> 
> So maybe (totally untested):
> 
> ---
> diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
> index 2a66063..0c1c6ad 100755
> --- a/contrib/hooks/post-receive-email
> +++ b/contrib/hooks/post-receive-email
> @@ -192,11 +192,16 @@ generate_email()
>  
>  generate_email_header()
>  {
> +	encoding=`git config i18n.logOutputEncoding`
> +	test -z "$encoding" && encoding=utf-8
>  	# --- Email (all stdout will be the email)
>  	# Generate header
>  	cat <<-EOF
>  	To: $recipients
>  	Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
> +	MIME-Version: 1.0
> +	Content-Type: text/plain; charset=$encoding
> +	Content-Transfer-Encoding: 8bit
>  	X-Git-Refname: $refname
>  	X-Git-Reftype: $refname_type
>  	X-Git-Oldrev: $oldrev

-- 
Fabian Emmes           mailto:emmes@informatik.rwth-aachen.de
LuFG Informatik 2      http://verify.rwth-aachen.de/emmes/
RWTH Aachen            phone: +49 241 80-21241

```

## Jeff King, 2009-07-31 01:52

Subject: Re: [PATCH] post-receive-email: Set content-type and encoding in generated mail
Message-ID: <20090731015215.GC11392@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090731015215.GC11392%40coredump.intra.peff.net
In-Reply-To: <20090730080206.GR31428@hebe.informatik.RWTH-Aachen.DE>

```
On Thu, Jul 30, 2009 at 10:02:06AM +0200, Fabian Emmes wrote:

> thanks Teemu and Jeff for correcting the errors. Indeed I assumed that
> git log would always output UTF-8 and a "Content-Type" header would be
> valid on its own. The patch of Jeff solves my problem. I tested the
> results in mutt, kmail and thunderbird.

Great. Would you mind re-submitting the patch you tested with a
proper write-up in the commit message?

-Peff

```
