【发布时间】:2015-04-14 20:04:19
【问题描述】:
我正在使用 Perl 和 Mail::IMAPClient 模块来搜索电子邮件并从 Gmail 服务器获取它们,但遇到了 X-GM 中的 unicode 字符串问题-生的。
当我发送命令时:
搜索字符集 UTF-8 X-GM-RAW "Новости"
它不起作用:(
但是
搜索字符集 UTF-8 X-GM-RAW“新闻”
正常工作并返回消息 ID 列表
我的 perl 脚本如下所示:
#!/usr/bin/env perl
use utf8::all;
use strict;
use warnings;
use feature 'say';
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => 'imap.gmail.com',
User => 'username@gmail.com',
Password => 'secr3t',
Ssl => 1,
Uid => 0,
Debug => 1
);
$imap->select('[Gmail]/All Mail');
my $news = $imap->search('CHARSET UTF-8 X-GM-RAW "Новости"');
print "@$news"; # print message ids
调试消息:
Started at Wed Apr 15 00:25:43 2015
Using Mail::IMAPClient version 3.35 on perl 5.020002
Connecting with IO::Socket::SSL PeerAddr imap.gmail.com PeerPort 993 Proto tcp Timeout 600 Debug 1
Connected to imap.gmail.com
Read: * OK Gimap ready for requests from 178.47.31.152 e1mb42229459lab
Sending: 1 LOGIN username@gmail.com secr3t
Sent 43 bytes
Read: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT
1 OK username@gmail.com authenticated (Success)
Sending: 2 SELECT "[Gmail]/All Mail"
Sent 29 bytes
Read: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $label3 $Phishing $Forwarded $MDNSent Old $NotJunk NotJunk NonJunk $NotPhishing Junk)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $label3 $Phishing $Forwarded $MDNSent Old $NotJunk NotJunk NonJunk $NotPhishing Junk \*)] Flags permitted.
* OK [UIDVALIDITY 596378645] UIDs valid.
* 36992 EXISTS
* 0 RECENT
* OK [UIDNEXT 99973] Predicted next UID.
* OK [HIGHESTMODSEQ 3390697]
2 OK [READ-WRITE] [Gmail]/All Mail selected. (Success)
Sending: 3 SEARCH CHARSET UTF-8 X-GM-RAW "Новости"
Sent 41 bytes
...
并没有停止... 直到我用 Ctrl+C 杀了他
如果你已经解决了这个问题,请帮忙!)
谢谢!
【问题讨论】:
标签: perl encoding utf-8 gmail imap