- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
> $HOME/$FILENA-6ren">
我在 SMTP 服务器上的 .procmailrc 中有以下行:
BODY=`formail -I ""`
稍后我将这个正文回显到本地文件:
echo "$BODY" >> $HOME/$FILENAME; \
我也试过prinf(但我得到了同样的效果):
printf "$BODY" >> $HOME/$FILENAME; \
当我阅读此文件时,我可以看到编码已更改。这是我得到的:
Administrator System=C3=B3w
虽然它应该是(波兰语):
Administrator Systemów
如何直接在 .procmailrc 或更高版本(bash/python)中解码/编码正文以获得正确的字符串?
我的 .procmailrc
中的另一行工作正常,但它需要带有 perl 编码器的额外管道:
SUBJECT=`formail -xSubject: | tr -d '\n' | sed -e 's/^ //' | /usr/bin/perl -MEncode -ne 'print encode ("utf8",decode ("MIME-Header",$_ )) '`
SUBJECT 包含 UTF8 字符,一切正常。也许有一种方法可以对邮件正文使用类似的解决方案?
好的。我终于让一切都启动并运行了。这是我所做的:
首先是.procmailrc 文件:
VERBOSE=yes
LOGFILE=$HOME/procmail.log
:0f
* ^From.*(some_address@somedomain.com)
| $HOME/python_script.py
现在到 python_script.py:
#!/usr/bin/python
from email.parser import Parser
import sys
temp_file = open("/home/(user)/file.txt","w")
temp_file.write("START\n")
if not message.is_multipart():
temp_file.write(message.get_payload(decode=True))
else:
for part in message.get_payload():
if part.get_content_type() == 'text/plain':
temp_file.write(part.get_payload(decode=True))
temp_file.close()
最难调试的部分是 .procmailrc 配方,我必须在其中测试 :0、:0f、:0fbW 等的许多选项...并最终找到最适合的那个.
下一个有问题的步骤是直接在 .procmailrc 中解码的 $BODY 部分。不过,我找到了解决方案,方法是摆脱所有的东西并将所有东西都移到 Python 脚本中。正如 tripleee 所建议的那样。
最佳答案
它没有改变,但是您正在切换 header ,以便正确的 Content-Type:
header 不再存在(您还应该保留 Mime-Version:
和任何其他标准 Content-*
header )。
通过检查邮件客户端中的消息来源,您应该看到 Procmail 或 Bash 实际上没有改变任何东西。您收到的文本实际上是 Administrator System=C3=B3w
但 MIME header 会通知您的电子邮件客户端这是 Content-Transfer-Encoding: quoted-printable
和 内容类型:文本/纯文本; charset="utf-8"
所以它知道如何正确解码和显示它。
如果您只需要有效载荷,则需要自己对其进行解码,但为此,您需要来自 MIME header 的信息,因此在处理消息之前不应该杀死它们(如果有的话) ).可能是这样的:
from email.parser import Parser
import sys
message = Parser().parse(sys.stdin)
if message['content-type'].lower().startswith('text/'):
print(message.get_payload(decode=True))
else:
raise DieScreamingInAnguish('aaaargh!') # pseudo-pseudocode
这是非常简单的,因为它假定(就像您当前的、甚至更破烂的解决方案一样)消息包含一个单一的文本部分。将它扩展到多部分消息在技术上并不难,但具体如何做到这一点取决于您希望接收哪种类型的多部分,以及您希望对有效负载执行什么操作。
喜欢 your previous question我想建议您将更多或全部电子邮件操作转移到 Python 中,如果您无论如何都要使用它的话。 Procmail 没有明确的 MIME 支持,因此您必须在 Procmail 中重新发明所有这些,这既不简单也不特别有成效。
关于python - procmail处理后的邮件正文编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403296/
我在休息服务中有以下方法: @POST @Path("/create") @ResponseStatus(HttpStatus.CREATED) @Consumes(M
这个问题不太可能对 future 的访客有帮助;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the hel
我有这样的弹出框: Speelland And here's some amazing content. It's very engaging. Right? Meer
我正在开发一个 firefox 插件,我正在收听这样的 http 响应: var observerService = Components.classes["@mozilla.org/observer
我正在使用 jqtouch 制作一个移动网站。我还在网站中实现了图库图像 slider ,但是当图库放在我需要的位置时(在 之间,图像不会显示。 修补了几个小时后,删除了 display: none
为了在 iPad 上的 Safari 上显示视差效果,我采用了以下 CSS 规则: body:after { content: ""; position: fixed; top
我想在通过 excel VBA 创建的电子邮件正文中插入一个链接。链接每天都在变化,所以我把它的值放在单元格 B4 中。但是,我找不到正确的方法来发送带有该链接的电子邮件。 这是我正在使用的代码: P
我正在尝试使用具有非常大主体的 Postman 执行 POST 请求。只有一个 JSON 字段非常大,我想知道是否可以从 Postman 的文件中加载该字段? { "field1": {
这个问题是针对 SoapUI 5.2.1 社区版的: 我有一个包含变量的 JSON 主体的 POST 请求。 我总是能够通过单击“原始”选项卡以查看请求进行或将发送到服务器来验证这些参数是否采用正确的
我有这个按钮,单击该按钮会打开 Outlook,其中包含我提供的详细信息。我还有一个 TEXTAREA,其中包含某些文本。我正在寻找一种方法让此文本出现在我的 Outlook 正文中。这可以做到吗?请
我知道错误消息是不言自明的,我们无法多次读取消息正文。这里我使用AOP(面向方面编程)来进行审计日志。 [AuditServiceMethod(AttributePriority = 0)] [F
我在 grails 3.3.3 中编写自定义验证器(命令)时遇到了一些问题。具体来说,我正在尝试验证其正文由项目列表组成的 POST 请求。这就是我所拥有的... 命令: class VoteComm
这个问题在这里已经有了答案: json.Marshal(struct) returns "{}" (3 个回答) JSON and dealing with unexported fields (3
我想清理很多邮件的 HTML 正文,它们有点脏(取自 Gmail 发送的电子邮件):有很多嵌套 ,不需要的字体更改等我想清理它并只保留 , , , , , 仅此而已(可能还有 或一些 ,
我正在使用 Accordion 功能在我的模块中添加端口详细信息。我只想在水平方向上显示正文内容。请看下面的 fiddle 。 html, body { background-color:#e
我的 HTML 正文中有这个: loaded yÉt. 使用 JavaScript 我有这个: $( document ).ready(function() { document.bod
我对图表有很大的疑问。我试图在谷歌图表中显示一些 json 值,但我总是会出错。从 JSON 正文中,我只需要图表上个月的“全部购买”和“日期”。我见过的所有例子,他们已经有了一个静态的自定义 Jso
我的应用程序的功能之一涉及用户填写三个单独的文本字段(预订名称、客人和日期),然后使用文本编辑器通过短信发送这些字段中的文本。我无法将这些 View 中的文本放入正文中。这是我的代码: - (IBAc
我正在开发一个 HTA,它应该对 onunload 事件进行一些最终修改。该事件似乎没有被触发。 该事件是否仍受支持?是否有 IE 事件可以知道页面何时关闭? 我检查了一下(JavaScript bo
我正在尝试将以下图像添加为网站内容的背景: http://webbos.co/vibration/wp-content/themes/vibration-child-theme/images/back
我是一名优秀的程序员,十分优秀!