Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP UTF8邮件在iPhone邮件应用程序中被篡改_Php_Iphone_Email_Utf 8 - Fatal编程技术网

PHP UTF8邮件在iPhone邮件应用程序中被篡改

PHP UTF8邮件在iPhone邮件应用程序中被篡改,php,iphone,email,utf-8,Php,Iphone,Email,Utf 8,我使用php内部邮件函数发送邮件,我把它包装在一个UTF8函数中的过程,我在网上找到了它 它是有效的,我将代码中的电子邮件发送到我的GMAIL和我的EXCHANGE服务器,在GMAIL和我的PC上的Outlook客户端中,我得到了正确的消息 我的iPhone也连接到exchange和GMAIL帐户,所以我在iPhone上收到这两条消息。iPhone正确地接收到GMAIL信息,但EXCHANGE帐户显示的信息带有乱码,没有拉丁字符 下面的示例在主题和正文中发送希伯来文字符。在我的iPhone上,主

我使用php内部邮件函数发送邮件,我把它包装在一个UTF8函数中的过程,我在网上找到了它

它是有效的,我将代码中的电子邮件发送到我的GMAIL和我的EXCHANGE服务器,在GMAIL和我的PC上的Outlook客户端中,我得到了正确的消息

我的iPhone也连接到exchange和GMAIL帐户,所以我在iPhone上收到这两条消息。iPhone正确地接收到GMAIL信息,但EXCHANGE帐户显示的信息带有乱码,没有拉丁字符

下面的示例在主题和正文中发送希伯来文字符。在我的iPhone上,主题以希伯来语被正确接收,但邮件正文中的希伯来语部分是乱码

有人能对此发表评论吗?也许在你自己的设置中尝试一下

谢谢

<?php


function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') { 
$header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' .   "\r\n"; 
mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header_ . $header);  
}

$mymessage = "Hello <BR>"; 
$mymessage.= "Received: now<BR/><BR/>";
$mymessage.= "details: שלום שלום<BR/><BR/>";

mail_utf8 ("XXX@gmail.com,XXX@exchangeServer.com", "שלום", $mymessage, "my_mail", "mailer@phpmail.com");


?>

简单答案-使用。电子邮件中的标题魔力是不可预测的。我也尝试了很长一段时间,但迟早有人报告说,在他的设置(电子邮件提供商或应用程序)中,文本是乱码之类的(我用捷克语发送了很多电子邮件,所以使用UTF是优先考虑的)


使用Swift Mailer,省得你自己太紧张了。它的设置和学习速度很快,效果很好。

因为您的gmail帐户通过您的iPhone正确接收到消息,这可能是exchange服务器或iPhone exchange同步中的错误/配置

最好的做法是base64不仅对主题进行编码,而且对整个消息进行编码:base64使用的字符几乎总是正确传输的,因为字符代码在US-ASCII、ISO-8859-x和UTF-8中是相同的。所有现代邮件客户端都可以解码base64,但它确实会将您的邮件大小增加约33%

 function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') { 
      $header_ = 'MIME-Version: 1.0' . "\r\n" .
                 'Content-type: text/plain; charset=UTF-8' .   "\r\n" .
                 'Content-Transfer-Encoding: base64' . "\r\n"; 
      mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', base64_encode($message), $header_ . $header);  
 }

我在iPhone和Exchange上遇到了同样的问题,我用
内容传输编码:引用可打印\r\n
引用可打印编码()
请按以下方式尝试您的代码:

function mail_utf8($to, $subject = '(No subject)', $message = '', $from ='') { 
  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  $headers .= "Content-Transfer-Encoding: quoted-printable\r\n";
  $headers .= "From: $from\r\n";
  mail($to, $subject, $message, $headers);  
}
$mymessage = "Hello <BR>"; 
$mymessage.= "Received: now<BR/><BR/>";
$mymessage.= "details: שלום שלום<BR/><BR/>";
$mymessage = quoted_printable_encode($mymessage);

mail_utf8 ("XXX@gmail.com,XXX@exchangeServer.com", "שלום", $mymessage, "mailer@phpmail.com");
function mail_utf8($to,$subject='(无主题)$message='',$from=''){
$headers=“MIME版本:1.0\r\n”;
$headers.=“内容类型:text/html;字符集=UTF-8\r\n”;
$headers.=“内容传输编码:带引号的可打印\r\n”;
$headers.=“发件人:$From\r\n”;
邮件($to、$subject、$message、$headers);
}
$mymessage=“你好
”; $mymessage.=“已收到:现在

”; $mymessage.=“详细信息:ש㪛וםש㪛ום

”; $mymessage=quoted_printable_encode($mymessage); 邮件_utf8(“XXX@gmail.com,XXX@exchangeServer.com“,”שלום“,$mymessage,”mailer@phpmail.com");
顺便说一句,我不认为你在发送
文本/普通电子邮件时需要

s,
PHP\u EOL
可能会更好。事实上,我正在尝试发送HTML,我只是在这个示例中复制了错误的标题尝试了你的代码,GMAIL做对了,Outlook和iPhone现在都把它的主体搞乱了,甚至是拉丁文字…我用雷鸟来发送信息,我的症状和iPhone从GMail帐户读取信息时一样。在我的例子中,
内容传输编码:定义了8bit
,因此传输编码似乎不是问题的根源。请参阅并向使用此选项的任何人发出警告:base64_编码使您的电子邮件更有可能最终进入垃圾邮件/批量筛选器,因为base64编码的正文是垃圾邮件筛选器的一个危险标志。像您提供的或PHPMailer这样的邮件包装器可以工作,但不是此特定问题的解决方案。尤其是如果代码完全可以通过重构来使用包装器,那么这可能比修复bug要复杂得多。我尝试了另一个包装器PHPMAILER,它发送了邮件,我得到了完全相同的结果。。。还是乱七八糟的…@Moshe Marciano,在这种情况下,我帮不了你更多,我对IPProducts没有太多经验,对它们的内部结构也没有太多经验…在对Swift Mailer进行基准测试之后,我停止了它的使用,简单的东西需要太多的资源。