Sen MIME kullanmanız gerekir. Posta başlıklarını ekle:
MIME-Version: 1.0
Content-Type: text/plain;charset=utf-8
(Zaten bir MIME kullanıyorsanız multipart/alternative
aynı posta HTML ve metin koymak, yerine metin parçası alt başlıklarında Content-Type: text/plain;charset=utf-8
koydu.)
Bu sizin "uluslararası" karakter göndermek olacak kodlaması UTF-8 olduğunu varsayarak. Birden fazla ülkede karşılamak üzere bekliyoruz UTF-8 senin uygulama boyunca kullanılacak kodlama sadece makul bir seçimdir, ama gerçekten bu konuda düşünce değil eğer henüz site bir Batı Avrupa kodlama varsaymak olabilir. Çince karakterler gibi şeyler postada onlar hakkında endişe önce sitenizde ve veritabanı düzgün çalıştığını kontrol edin.
Rayından: UTF-8 posta göndererek en etkili şey değil nerede yerel ayarlar vardır. Çin hakkında bilmiyorum, ama Japonya'da Unicode ile baş ve yerine böyle Shift-JIS olarak yerele özgü bir kodlama verilmesi olamaz biraz geriye doğru ve saçma posta sistemleri (özellikle webmail) hala vardır. Eğer bu pazarlara konsantre iseniz sık sık posta özel kodlanmış sürümlerini oluşturmak için iconv
kullanmak zorunda bitireceğiz. Tatsız.
Birçok posta sunucuları posta vücutta ASCII olmayan karakterler ile baş edemez çünkü Şimdi, bunları kodlamak gerekir. Alıntı-yazdırılabilir ya da bunun için base64 seçebilirsiniz; quoted-printable, genellikle küçük ve de bunun ASCII karakterleri olan içerik için daha okunabilir:
Content-Type: text/plain;charset=utf-8
Content-Transfer-Encoding: quoted-printable
Hello! An a-acute is =C3=A1
Bu formatta kodlamak için işlevi quoted_printable_encode. Eğer bu işlevi almak için makul bir up-to-date PHP gerekiyor Ancak; Eğer yoksa bunun yerine base64
için Content-Transfer-Encoding
kurmak ve kullanmak olabilir base64_encode.
Son olarak, başlıklarında ASCII olmayan karakterler eklemek istiyorsanız (örneğin, From
in, To
veya Subject
), tamamen farklı bir sözdizimi vardır:
Subject: =?utf-8?b?QW4gYS1hY3V0ZSBpcyDDoQ==?=
Ortasında o QW...==
karışıklık base64_encode
UTF-8 "Bir a-Akut A" olduğu durumlarda.