Как получить тему письма gmail с помощью curl?

Centos 7 (на моем тестовом virt, а также, предположительно, Centos 6 )имеют тенденцию устанавливать UTF -8 по умолчанию, если вы не указали иное установщику или не перенастроили систему для какой-либо другой кодировки. /root/anaconda-ks.cfgможет указывать, какой язык был установлен при установке:

# echo -e '\xe9' | iconv -f iso-8859-1 -t UTF-8
é
# locale
... (bunch of UTF-8 things here)...
# grep lang /root/anaconda-ks.cfg
lang en_US.UTF-8
#

Юникод можно отключить с помощью:

# unicode_stop
# setfont -m 8859-1
# echo -e '\xe9'
é
# 

, который, надеюсь, такой же, как и в Centos 6. Из некоторых grep, бродящих по /etc, файлы /etc/sysconfig/i18nили /etc/locale.confвыглядят так, как будто они управляют локалью.

3
20.08.2019, 10:57
1 ответ

Я думаю, что понял, в чем проблема. Gmail отправляет ответ в несколько этапов, curl выводит только первым. Я пишу код на lua, который может получить сообщение SUBJECT. Что-то вроде этого

local socket    = require "socket"
local ssl       = require "ssl"
local format    = string.format

local server   = "imap.gmail.com"
local port     = 993
local login    = "user@gmail.com"
local password = "***"
local params = {
    mode = "client",
    protocol = "tlsv1",
    verify = "none",
    options = "all",
}

local conn = socket.connect(server, port)
conn = ssl.wrap(conn, params)
conn:dohandshake()
conn:settimeout(5)

conn:send(format("123 LOGIN %s %s", login, password).. '\r\n')
conn:send("123 EXAMINE INBOX".. '\r\n')
conn:send("123 FETCH 86 BODY.PEEK[HEADER.FIELDS (SUBJECT)]".. '\r\n')

local result = ""
while result do
    result = conn:receive()
    if result then
        print(result)
    end
end

conn:send("LOGOUT")
conn:close()

Выводит

* OK Gimap ready for requests from 176.114.188.238 q1mb64314748lfc
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
123 OK bugaev.nsu@gmail.com authenticated (Success)
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing)
* OK [PERMANENTFLAGS ()] Flags permitted.
* OK [UIDVALIDITY 1] UIDs valid.
* 352 EXISTS
* 0 RECENT
* OK [UIDNEXT 1283] Predicted next UID.
* OK [HIGHESTMODSEQ 218991]
123 OK [READ-ONLY] INBOX selected. (Success)
* 86 FETCH (BODY[HEADER.FIELDS (SUBJECT)] {37}
Subject: =?UTF-8?B?UmVbMTJdOiA=?=

)
123 OK Success
0
27.01.2020, 21:33

Теги

Похожие вопросы