Ek dosya adı kümesi

İyi günler,

PHPMailer ile SMTP üzerinden ekli bir e-posta gönderiyorum.

Postadaki karakter kümesi utf-8 olarak ayarlanmış, ancak örneğin 'März' gibi özel bir karakter eki gönderdiğimde, müşteri şöyle bir kırık karakter kümesi eklenmiş olur: M :rz.

Kod Örneği:

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';

$mail->Host = "host ip";
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Username = "user";
$mail->Password = "pw";

$mail->setFrom('[email protected]', 'Host');
$mail->addAddress("[email protected]");
$mail->Subject = 'Subject';
$mail->Body = "Email Content";
$mail->AltBody = 'Alternative Email Content';

$mail->AddAttachment("example/file_märz.pdf");

Yanlış bir şey mi yapıyorum veya bu sorun için herhangi bir düzeltme var mı?

2
Dosya adıyla veya PDF'nin içeriğiyle ilgili bir sorun mu var?
katma yazar Qualcuno, kaynak
Dosya adıyla veya PDF'nin içeriğiyle ilgili bir sorun mu var?
katma yazar Qualcuno, kaynak
PDF'nin dosya adı, pdf kendisi iyi
katma yazar Harderer, kaynak
PDF'nin dosya adı, pdf kendisi iyi
katma yazar Harderer, kaynak

6 cevap

Blockquote

Ben de aynı problemi yaşadım.

Ekleyerek çözebilir:

utf8_encode (), ekin [] dizisinin $ adına işlev yapar.

Benim phpmailer sürümünde 1322 satırında class.phpmailer.php yer almaktadır.

2
katma

Blockquote

Ben de aynı problemi yaşadım.

Ekleyerek çözebilir:

utf8_encode (), ekin [] dizisinin $ adına işlev yapar.

Benim phpmailer sürümünde 1322 satırında class.phpmailer.php yer almaktadır.

2
katma

Sorun dosya adındaysa ve dosya adını uygulamanızın kaynak kodunun içine (PHP dosyasında) yazıyorsanız, sorun aşağıdakilerden biri veya her ikisi olabilir:

  1. PHP dosyası yanlış kodlamayla kaydedilir. Yani, PHPMailer’e UTF-8 e-posta göndermesini söylüyorsunuz, ancak PHP dosyanız ISO-8859-1 kodlamasında kaydedilebilir. Böylece, PHP "example/file_märz.pdf" kodunu okuduğunda, ISO-8859-1'deki bayt sırasını okur, ancak daha sonra PHPMailer'e UTF-8 olarak yorumlamasını söyler.
    Çözüm: metin düzenleyicinizin UTF-8'deki dosyaları kaydettiğinden emin olun

  2. İşletim sistemi ve/veya istemci, ek için Unicode dosya adlarını desteklemiyor.
    Çözüm: gerçekten bir çözüm yok, dosya adlarında ASCII olmayan karakterlerden kaçınmanız gerekir (bu, zaten kötü bir fikir olamazdı).

Editörünüz zaten UTF-8 olarak ayarlandıysa ve istemcinizin/OS'nizin dosya adlarında Unicode'u desteklediğinden eminseniz, PHPMailer'in gönderdiği ham e-postayı kontrol etmeniz ve ne içerdiğini görün. Birçok e-posta istemcisi, ham e-postayı görmenizi sağlar (tüm ham metin).

0
katma
Evet bu doğru ve olması gerektiği gibi. O zaman benim # 2, istemcide değil sunucuda değil. Muhtemelen e-posta istemcisi (veya istemci işletim sistemi) Unicode dosya adlarını desteklemiyordur.
katma yazar Qualcuno, kaynak
Haklısın E4, Unicode kod noktasıdır; doğru bayt sırası C3 + A4 olur (kaynak: utf8-chartable.de ). E4 ayrıca ISO-8859-1'deki bayt dizisidir, ancak: fileformat.info/info/charset/ISO-8859-1/list.htm ve bu, yine yukarıdaki 1 numaralı noktam olabileceğini düşündürüyor.
katma yazar Qualcuno, kaynak
PHPMailer sonunda kodlamayı yapıyor: github .com/PHPMailer/PHPMailer/blob/v5.2.9/& hellip; PHP dosyalarınızın düzgün bir şekilde kaydedilmediğine gerçekten inanıyorum. Başka bir açıklama bulamıyorum
katma yazar Qualcuno, kaynak
Yardımınız için teşekkürler. .Pp dosyasının UTF-8'e kaydedildiğinden emin oldum. Ayrıca dosya, unicode dosya adlarını çalıştırabilen bir Debian Linux Server 7 üzerinde çalışıyor. Ek dosya baktığımda, kodlanmış ve doğru gösterilmiştir. E-postanın ham başlıklarına baktığımda name instead yerine name isminde '= C3 = A4 ’(doğru utf-8 karakterinin ne gibi gözüktüğü) alıyorum, bu herhangi bir yardım olabilir mi?
katma yazar Harderer, kaynak
Hm garip, biz Microsoft Outlook 2010 posta istemcileri ile Windows 7 PC kullanıyoruz. Ama haklısın, postanın kendisi doğru görünüyor.
katma yazar Harderer, kaynak
Belki ilginç bir şey buldum. Ek adını posta konusuyla karıştırdım (ek başlığı Outlook'ta gösterilmedi, sry ..), bu nedenle doğru '= C3 = A4' konudaydı. Ekte, 'ä', 'unicode pozisyonu gibi görünen' = E4 'olarak gösterilir. Gmail doğru yorumluyor, ancak Outlook değil. Bunun için bir fikriniz var mı?
katma yazar Harderer, kaynak

Sorun dosya adındaysa ve dosya adını uygulamanızın kaynak kodunun içine (PHP dosyasında) yazıyorsanız, sorun aşağıdakilerden biri veya her ikisi olabilir:

  1. PHP dosyası yanlış kodlamayla kaydedilir. Yani, PHPMailer’e UTF-8 e-posta göndermesini söylüyorsunuz, ancak PHP dosyanız ISO-8859-1 kodlamasında kaydedilebilir. Böylece, PHP "example/file_märz.pdf" kodunu okuduğunda, ISO-8859-1'deki bayt sırasını okur, ancak daha sonra PHPMailer'e UTF-8 olarak yorumlamasını söyler.
    Çözüm: metin düzenleyicinizin UTF-8'deki dosyaları kaydettiğinden emin olun

  2. İşletim sistemi ve/veya istemci, ek için Unicode dosya adlarını desteklemiyor.
    Çözüm: gerçekten bir çözüm yok, dosya adlarında ASCII olmayan karakterlerden kaçınmanız gerekir (bu, zaten kötü bir fikir olamazdı).

Editörünüz zaten UTF-8 olarak ayarlandıysa ve istemcinizin/OS'nizin dosya adlarında Unicode'u desteklediğinden eminseniz, PHPMailer'in gönderdiği ham e-postayı kontrol etmeniz ve ne içerdiğini görün. Birçok e-posta istemcisi, ham e-postayı görmenizi sağlar (tüm ham metin).

0
katma
Evet bu doğru ve olması gerektiği gibi. O zaman benim # 2, istemcide değil sunucuda değil. Muhtemelen e-posta istemcisi (veya istemci işletim sistemi) Unicode dosya adlarını desteklemiyordur.
katma yazar Qualcuno, kaynak
Haklısın E4, Unicode kod noktasıdır; doğru bayt sırası C3 + A4 olur (kaynak: utf8-chartable.de ). E4 ayrıca ISO-8859-1'deki bayt dizisidir, ancak: fileformat.info/info/charset/ISO-8859-1/list.htm ve bu, yine yukarıdaki 1 numaralı noktam olabileceğini düşündürüyor.
katma yazar Qualcuno, kaynak
PHPMailer sonunda kodlamayı yapıyor: github .com/PHPMailer/PHPMailer/blob/v5.2.9/& hellip; PHP dosyalarınızın düzgün bir şekilde kaydedilmediğine gerçekten inanıyorum. Başka bir açıklama bulamıyorum
katma yazar Qualcuno, kaynak
Yardımınız için teşekkürler. .Pp dosyasının UTF-8'e kaydedildiğinden emin oldum. Ayrıca dosya, unicode dosya adlarını çalıştırabilen bir Debian Linux Server 7 üzerinde çalışıyor. Ek dosya baktığımda, kodlanmış ve doğru gösterilmiştir. E-postanın ham başlıklarına baktığımda name instead yerine name isminde '= C3 = A4 ’(doğru utf-8 karakterinin ne gibi gözüktüğü) alıyorum, bu herhangi bir yardım olabilir mi?
katma yazar Harderer, kaynak
Hm garip, biz Microsoft Outlook 2010 posta istemcileri ile Windows 7 PC kullanıyoruz. Ama haklısın, postanın kendisi doğru görünüyor.
katma yazar Harderer, kaynak
Belki ilginç bir şey buldum. Ek adını posta konusuyla karıştırdım (ek başlığı Outlook'ta gösterilmedi, sry ..), bu nedenle doğru '= C3 = A4' konudaydı. Ekte, 'ä', 'unicode pozisyonu gibi görünen' = E4 'olarak gösterilir. Gmail doğru yorumluyor, ancak Outlook değil. Bunun için bir fikriniz var mı?
katma yazar Harderer, kaynak

PHPMailer'e ek işlemi sırasında bakıyorum basename kullanıldı. Bu nedenle, belirli bir kodlamayı doğru şekilde vermek için, dosya adınızla uyumlu hangi karakter grubuna bağlı olarak setlocale yapmanız gerekir.

setlocale(LC_ALL, 'ja_JP.UTF-8');

Yukarıdaki kod benim için çalıştı. Dosya ismim için Japonca/metin kullanıyorum.

0
katma

PHPMailer'e ek işlemi sırasında bakıyorum basename kullanıldı. Bu nedenle, belirli bir kodlamayı doğru şekilde vermek için, dosya adınızla uyumlu hangi karakter grubuna bağlı olarak setlocale yapmanız gerekir.

setlocale(LC_ALL, 'ja_JP.UTF-8');

Yukarıdaki kod benim için çalıştı. Dosya ismim için Japonca/metin kullanıyorum.

0
katma