Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 附件文件名的字符集_Php_Email_Utf 8_Character Encoding_Phpmailer - Fatal编程技术网

Php 附件文件名的字符集

Php 附件文件名的字符集,php,email,utf-8,character-encoding,phpmailer,Php,Email,Utf 8,Character Encoding,Phpmailer,你好 我正在用PHPMailer通过SMTP发送一封带有附件的电子邮件 邮件中的字符集设置为utf-8,但当我发送一个带有特殊字符(例如'März')的附件时,客户端会收到一个带有损坏字符集(例如:M)的附件�rz 我的代码示例: $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "host ip"; $mail->SMTPDebug = 0; $mail-

你好

我正在用PHPMailer通过SMTP发送一封带有附件的电子邮件

邮件中的字符集设置为utf-8,但当我发送一个带有特殊字符(例如'März')的附件时,客户端会收到一个带有损坏字符集(例如:M)的附件�rz

我的代码示例:

$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('send@host.de', 'Host');
$mail->addAddress("client@mail.de");
$mail->Subject = 'Subject';
$mail->Body = "Email Content";
$mail->AltBody = 'Alternative Email Content';

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

我是否做错了什么,或者是否对此问题进行了修复?

如果问题出在文件名上,并且您正在将文件名写入PHP文件中应用程序的源代码中,那么问题可能是以下一种或两种情况:

PHP文件以错误的编码保存。也就是说,您告诉PHPMailer发送UTF-8电子邮件,但是您的PHP文件可以保存为ISO-8859-1编码。因此,当PHP读取示例/文件_märz.pdf时,它会读取ISO-8859-1中的字节序列,但随后它会告诉PHPMailer将其解释为UTF-8。 解决方案:确保文本编辑器以UTF-8格式保存文件

操作系统和/或客户端不支持附件的Unicode文件名。 解决方案:没有真正的解决方案,您需要避免在文件名中使用非ASCII字符,这无论如何都不是一个坏主意


如果编辑器已设置为UTF-8,并且您确信客户端/操作系统在文件名中支持Unicode,则需要检查phpMail发送的原始电子邮件,并查看其中包含的内容。许多电子邮件客户端允许您查看原始电子邮件和整个原始文本。

如果问题在于文件名,并且您正在将文件名写入PHP文件中应用程序的源代码中,那么问题可能是以下一种或两种情况:

PHP文件以错误的编码保存。也就是说,您告诉PHPMailer发送UTF-8电子邮件,但是您的PHP文件可以保存为ISO-8859-1编码。因此,当PHP读取示例/文件_märz.pdf时,它会读取ISO-8859-1中的字节序列,但随后它会告诉PHPMailer将其解释为UTF-8。 解决方案:确保文本编辑器以UTF-8格式保存文件

操作系统和/或客户端不支持附件的Unicode文件名。 解决方案:没有真正的解决方案,您需要避免在文件名中使用非ASCII字符,这无论如何都不是一个坏主意

如果编辑器已设置为UTF-8,并且您确信客户端/操作系统在文件名中支持Unicode,则需要检查phpMail发送的原始电子邮件,并查看其中包含的内容。许多电子邮件客户端允许您查看原始电子邮件和整个原始文本

大宗报价

我也有同样的问题

可以通过添加以下内容来解决此问题:

utf8_将函数编码为附件[]数组的$name

在我的版本中,phpmailer位于第1322行的class.phpmailer.php上

大宗报价

我也有同样的问题

可以通过添加以下内容来解决此问题:

utf8_将函数编码为附件[]数组的$name


在我的phpmailer版本中,位于第1322行的class.phpmailer.php上。

查看附件过程中的phpmailer,我找到了basename 被使用了。因此,要正确输出特定编码,需要根据与文件名兼容的字符集设置Locale

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

上面的代码对我有用。因为我的文件名使用日语/文本。

在附件过程中查看PHPMailer,我找到了basename
setlocale(LC_ALL, 'ja_JP.UTF-8');
被使用了。因此,要正确输出特定编码,需要根据与文件名兼容的字符集设置Locale

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

上面的代码对我有用。因为我的文件名使用日语/文本。

是文件名还是PDF内容有问题?是PDF文件名,PDF本身有问题?是文件名还是PDF内容有问题?是PDF文件名,PDF本身有问题谢谢你的帮助。我确保.php文件保存在UTF-8中,就是这样。该文件还运行在DebianLinuxServer7上,该服务器支持unicode文件名。当我查找附件文件时,它被正确编码和显示。当我查找邮件的原始标题时,我得到了一个“=C3=A4”,在附件名称中似乎是正确的utf-8字符,而不是“ä”,这可能会有帮助吗?是的,这是正确的,它应该是这样的。然后是My2,但不是在服务器上,而是在客户机上。可能您的电子邮件客户端或客户端操作系统不支持Unicode文件名。奇怪的是,我们将Windows 7 PC与Microsoft Outlook 2010邮件客户端一起使用。但是你是对的,邮件本身似乎是正确的。可能发现了一些有趣的东西。我错误地将附件名称与邮件主题附件标题混淆,因为Outlook、sry..中未显示附件标题,因此正确的“=C3=A4”位于主题中。在附件中,“ä”显示为“=E4”,似乎是unicode位置。Gmail对它的解释是正确的,但Outlook则不然。有什么想法吗?你说得对。E4是Unicode码点,而正确的字节序列应该是C3+A4源:。E4也是字节序列
setlocale(LC_ALL, 'ja_JP.UTF-8');

然而,ISO-8859-1中的e:这让我觉得它完全可以再次成为我上面的第1点。谢谢你的帮助。我确保.php文件保存在UTF-8中,就是这样。该文件还运行在DebianLinuxServer7上,该服务器支持unicode文件名。当我查找附件文件时,它被正确编码和显示。当我查找邮件的原始标题时,我得到了一个“=C3=A4”,在附件名称中似乎是正确的utf-8字符,而不是“ä”,这可能会有帮助吗?是的,这是正确的,它应该是这样的。然后是My2,但不是在服务器上,而是在客户机上。可能您的电子邮件客户端或客户端操作系统不支持Unicode文件名。奇怪的是,我们将Windows 7 PC与Microsoft Outlook 2010邮件客户端一起使用。但是你是对的,邮件本身似乎是正确的。可能发现了一些有趣的东西。我错误地将附件名称与邮件主题附件标题混淆,因为Outlook、sry..中未显示附件标题,因此正确的“=C3=A4”位于主题中。在附件中,“ä”显示为“=E4”,似乎是unicode位置。Gmail对它的解释是正确的,但Outlook则不然。有什么想法吗?你说得对。E4是Unicode码点,而正确的字节序列应该是C3+A4源:。然而,E4也是ISO-8859-1中的字节序列:这让我认为它完全可能是我上面的第1点。