【问题标题】:Mail in turkish language土耳其语邮件
【发布时间】:2013-08-07 02:08:48
【问题描述】:

我的要求是用 php 发送土耳其语的邮件。 这是我的代码:

$rst2 = $this->selectQry(TBL_MAILSETTING,"mailTypeId='8' AND langId='1'",'0','0');
$query2= $this->getResultRow($rst2);
$subject2 = $query2['mailSubject'];

$subject2 = iconv_mime_decode($subject2, 2, "utf-8");

$subject2 = mb_convert_encoding($subject2, "utf-8","AUTO");
$subject2 = mb_encode_mimeheader($subject2);

$from1 = $_POST['email'];
$query2['message'] = $query2['mailContaint'];
$query2['message']=str_replace("[name]",$_POST[name],$query2['message']);

$message1 = $query2['message'];

mail(
      $from1
    , $subject2
    , "$message1\r\n"
    ,   "From: $from\n"
      . "MIME-Version: 1.0\n" 
      . "Content-type:text/html;charset=iso-8859-1" . "\r\n" 
      . 'X-Mailer: PHP/' . phpversion ()
);

这里一切都很顺利,但问题是主题以编码形式作为(Takım as Takım)在“evrimii Tebrik Card Designer Takım”中进行 任何机构可以提供帮助将不胜感激。

【问题讨论】:

  • 你试过utf-8iso-8859-9而不是iso-8859-1吗?
  • 是的,我试过 utf-8,iso-8859-9,iso-8859-1,iso-8859-2,但结果是一样的。
  • 你可以在 /etc/php.ini 和 /etc/php.d/mbstring.ini 中检查这个 "mbstring.*" 字符串,然后重启 apache,它可能会有所帮助
  • @Girish ı 是一个 HTML 实体。您没有在代码中的任何地方编码为 HTML,因此您的原始文本已经包含该实体。放错地方了从源头上摆脱它。
  • @Girish 除此之外,您需要为 headers 做的所有事情,就像主题行一样,就是 MIME 编码 它,因为电子邮件标题不能包含非 ASCII 字符。正文可以是您喜欢的任何编码,但您需要设置正确的标头来声明正文的编码。许多类似的问题都很好地涵盖了这一点。

标签: php


【解决方案1】:

只是一个建议:不要使用内置的邮件功能。使用 Zend Mail、phpmailer 或 PEAR Mail,或任何好的邮件包。关键是:一个开发良好的包解决了主要问题,也解决了您提出的问题(关于编码)。

但无论如何:您的问题归结为主题中的错误编码(这是针对 utf-8):

mail($to, '=?utf-8?B?'.base64_encode($subject).'?=', $message, $headers);

更多关于主题字符集编码的信息:

http://ncona.com/2011/06/using-utf-8-characters-on-an-e-mail-subject/

【讨论】:

    【解决方案2】:

    如 cmets 中所述,您可能在数据库中已将编码字符作为 ı

    您可以使用html_entity_decode() (http://de2.php.net/function.html-entity-decode) 来反转编码。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2014-04-17
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2011-03-25
      • 2015-01-07
      • 1970-01-01
      • 2018-08-03
      相关资源
      最近更新 更多