Zammad: 日语编码的7位iso-2022-jp处理不正确

创建于 2019-02-27  ·  29评论  ·  资料来源: zammad/zammad

资讯:

  • 使用的Zammad版本:最新版本2.9.x
  • 安装方法(来源,软件包,..):软件包
  • 操作系统:CentOS 7.1
  • 数据库+版本:Postgres
  • Elasticsearch版本:
  • 浏览器+版本:所有浏览器
  • 票证ID:#1042716(1047950,1076276)

预期行为:

正常处理所有日语电子邮件。

实际行为:

处理以7-bi iso-2022-jp字符集编码的电子邮件时,消息解码不正确。

假设邮件解析器出现问题。

其他编码/字符集组合似乎工作正常。

重现行为的步骤:

将电子邮件发送到7bit / iso-2022-jp中连接到Zammad队列的邮箱

如前所述,电子邮件消息中7位编码和iso-2022-jp字符集的组合会导致相应票证中的文本乱码。

例如,以下是电子邮件的明文:

Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

=1B$B$3$N%"%I%l%9$X$N%a%k%^%,$r2r=3D|$7$F$/$@$5$$!#=1B(B

--_000_SL2P216MB032969A22C6D22226A7B3613EF740SL2P216MB0329KORP_
Content-Type: text/html; charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-2022-=
jp">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div style=3D"font-family: Meiryo, =1B$B%a%$%j%*=1B(B, &quot;Hiragino Sans&=
quot;, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
=1B$B$3$N%"%I%l%9$X$N%a%k%^%,$r2r=3D|$7$F$/$@$5$$!#=1B(B</div>
</body>
</html>

电子邮件客户端会将其显示为格式正确的HTML消息:

このアドレスへのメルマガを解除してください。

Zammad将以这种方式显示票证主体:

$B$3$N%"%I%l%9$X$N%a%k%^%,$r2r=|$7$F$/$@$5$$!#(B
bug mail processing prioritised by payment third party issue verified waiting for feedback

最有用的评论

@lsergei-伟大的@mantas找到了解决邮件gem问题的解决方法,以便我们可以在代码中处理它。 宝石本身的可持续解决方案要好得多,但是这是我们目前无法完成的巨大任务。 但是,请在大约2周内在即将发布的Zammad 3.4版本中进行测试。

所有29条评论

Konnichiwa @lsergei-您能否提供完整的示例邮件,然后我们可以将其用于我们的测试套件? 那会很有帮助。 谢谢!

Konnichiwa @thorsteneckel ,谢谢您的快速回复。

您希望我如何向您转发有问题的消息? 仅转发它可能(并且很可能会)替换标头

通常,邮件程序可以选择将原始邮件保存为.eml格式。 对于Apple Mail,例如,它只是File -> Save As 。 在将其上传到此处之前,请确保在常规文本编辑器中打开该文件并删除所有敏感数据。

@thorsteneckel感谢您的解释。 请查看随附的消息。
由于GitHub不支持上载eml文件,因此文件扩展名已更改为txt。

メルマガ解除.txt

多莫·阿里加托(Domo arigato)!
问题已得到验证,我们将在无法解决该问题后立即对其进行更新。

因此,此问题的根本原因是我们用于解析邮件的依赖项不支持ISO 2022 JP编码的邮件。 还有一个额外的gem可以支持较旧的版本,但与我们正在使用不兼容
有一个6岁,陈旧且未决的Pull Request,我在上面添加了一条评论,以请求有关如何从此处进行提取的说明。 等待反馈...

我们现在可以重新评估是否有可行的解决方案吗?

邮件gem没有进行任何相关更改,因此(不幸地)我的最后评论仍然有效。

蝠ta,请问您是否有解决此问题的方法,而不必破解超过7年的被入侵宝石? 也许在大约之前就有可能进行转换。

@lsergei-伟大的@mantas找到了解决邮件gem问题的解决方法,以便我们可以在代码中处理它。 宝石本身的可持续解决方案要好得多,但是这是我们目前无法完成的巨大任务。 但是,请在大约2周内在即将发布的Zammad 3.4版本中进行测试。

@thorsteneckel@mantas-谢谢,感谢您的努力! 将测试并给您反馈。

期待新版本

你好。 我是zammad的新手。
我认为这个问题不固定在3.6.x
我的zammad服务器显示类似的乱码。

@hiromayu是否可以接收具有上述编码的电子邮件的原始eml文件,而该文件在Zammad 3.6中仍然无法通过? 您可以参考此问题将此eml发送到support [at] zammad [dot] com 。 那我们来看一下。

谢谢你。

嗨,MrGeneration。 我发送eml文件来支持。

@hiromayu @MrGeneration确实尚未

就像一个小小的跟进:
感谢@hiromayu和示例邮件,我们可以确定该问题。

它间接涉及此问题和问题#3096

你好。 谢谢你们。
我认为通过应用补丁可以解决此问题。
https://github.com/kuroda/mail-iso-2022-jp。
我的Zammad服务器完美地处理了我发送的邮件。

@hiromayu谢谢您的更新! 我可以知道您是如何应用该补丁的吗? 刚刚按照github文章中的说明安装了gem?

我忘了告诉我无法分辨解决此问题的原因。
我应用了补丁并更新了zammad server.so其中之一或两者都解决了问题。
我通过命令应用了补丁。
sudo zammad运行gem install mail-iso-2022-jp
然后重启。

谢谢@hiromayu 。 刚刚安装了gem,但据说只能安装不会解决此问题。 我可以知道您在server.so中做了什么更改吗?

抱歉。 我没有对server.so做任何事情。 我只是安装该补丁程序并更新ubuntu updater引入的zammad服务器。
如果仅安装补丁将无法正常工作。 决定解决问题还为时过早。 我将在几天后检查我的电子邮件。

@hiromayu我了解。 我做了同样的事情,并将监视问题是否消失。

非常感谢你!

只是一个重要的注意事项:请记住,此操作并非安全更新
因此,如果您真的想坚持使用该解决方案,并且系统上未安装错误修正#3096,我们将无法阻止您。

但是,因此而出现的所有错误将不再针对错误修复进行验证。

@hiromayu认为@MrGeneration实际上是更新安全的,因为没有代码修改。

也许关闭票还为时过早,但是对于今天来说,安装了所述gem之后我没有任何问题。

您确实改变了环境。
这就是说,如果您没有特定的源代码安装设置,则此操作不安全。

嘿! 提供一些技术背景:安装gem本身没有效果。 如果没有进一步的操作/代码更改,它将不会被加载。 因此,我建议再次删除已安装的gem,以恢复原始环境。 我怀疑7天前创建的提供的#3096修复程序解决了您的问题@ hiromayu🤔

感谢你所做的一切。 因此,Zammad的更新是解决此问题的原因。
抱歉,信息不正确。
我将重新安装Zammad服务器并检查结果。 并在几天后报告它确实已修复。

你好。 我得到了这个问题的另一个例子。
但是,我认为在更新zammad之前差异不大。
在更新之前,所有日语字符都乱码了。 但现在邮件主题是正确的。 只有邮件的主要文本是乱码。
我应该怎么办?

请创建一个新的问题。
这是一个复杂的问题,看似相同,但性质可能稍有不同。

此页面是否有帮助?
0 / 5 - 0 等级