AWS SES - Gönderici Adında UTF-8 Karakterlerin Kullanımı

Mevlüt Yıldırım
2 min readAug 13, 2021

--

Bugün, SES ile mail atarken yaşadığımız bir problemin çözümünden bahsedeceğim. Öncelikle biraz SES hizmetinden bahsedelim. SES (simple e-mail service) kısaca; amazonun sunduğu kolay, işlevsel, ölçeklenebilir, uygun maliyetli bir e-posta hizmetidir. Toplu e-posta iletimi, pazarlama gibi konularda yapılandırılabilen bu servis aynı zamanda python, java, php gibi bir çok dili desteklemektedir.

Problemimize gelelim; SES hizmeti yukarıda python ile yazılmış kod parçasında gördüğünüz gibi kendi içinde parametreler almaktadır. (Destination, Message, Source). Bu parametrelerden, message içinde olanlarda charset göndersek de source içinde yollayacağımız gönderici adı için maalesef ki charset gönderemiyoruz. Bu da aşağıdaki resimde ki gibi bir gönderici adı ortaya çıkarıyor.

Çok kötü duruyor değil mi ? Tabii ki bu şekilde kalmamalı. Çözümünden önce böyle olmasının sebebini irdeleyelim.

ASCII içermeyen karakterler RFC 2047 ile MIME kodlu söz dizimi kullanılarak kodlanmalıdır. RFC 2047, ASCII olmayan karakterlerin e-posta başlıklarına gömülmesini sağlayan bir standarttır. Bu standarta uymayan başlıklar olduğu gibi yazılmaktadır. Yani e-posta gönderici adı doğru olarak iletilmiş görünse de bozuk gönderici adı ile ortaya çıkıyor. Bunun için MIME kodlu söz dizimi (MIME encoded-word syntax) adında bir söz dizimini kullanarak kullanacağımız karakterleri kodlanmış şekilde göndermeliyiz. Gönderici adında ki ASCII olmayan karakterlerin gömülebilmesi için kullanılacak MIME kodlu söz dizimi “=?charset?encoding?encoded-text?=.” olmalıdır.

Biz burada Türkçe karakterlere göre; charset = utf-8 , encoding = ‘b’ (bytes), encoded-text = “çözümlenmiş gönderici adı” olarak değerler atadık. Peki bu işlemi python ile nasıl gerçekleştiririz?

Bu işlemlerden sonra gönül rahatlığıyla ASCII içermeyen karakterleri e-postalarımızın gönderici adlarına ekleyebiliriz.

Sonuç yukarıdaki gibi olacaktır. Okuduğunuz için teşekkür ederim.

--

--