gpt4 book ai didi

imap - 在 Racket 中使用 IMAP 阅读电子邮件

转载 作者:行者123 更新时间:2023-12-04 03:06:43 29 4
gpt4 key购买 nike

我正在使用以下代码建立 IMAP 连接。我想阅读电子邮件。我读了这个文件 link无法从这里继续。

我的代码:

#lang racket

(define imap-server "*****")
(define imap-port-no ***)
(define username "*****")
(define pw "*****")
(define mailbox-name "INBOX")

(require openssl/mzssl
net/imap
mzlib/etc)

(define (test-connect)
(let ([c (ssl-make-client-context)])
(let-values ([(in out) (ssl-connect imap-server imap-port-no c)])
(imap-connect* in out username pw mailbox-name))))

(define-values (imap cnt recent) (test-connect))

我正在从这里获取电子邮件计数和最近邮件计数。如何从这里开始。我应该调用哪些功能来阅读电子邮件。提前致谢。

最佳答案

尝试这样的事情:

(imap-get-messages imap '(1) '(uid flags header body))

这应该返回一个包含标志描述的“字段”的列表,其中 header 为您提供完整的标题部分,body 是电子邮件正文。 (这只是一个快速实验,以查看一切是否正常,您需要知道要检索哪些消息等——所有内容都在 the documentation 中进行了描述。)

这是一个完整的程序,它返回收件箱中每条消息所需的 header 列表,其中每条消息都获得一个 header 列表及其作为字符串的值。但请注意,对于此类事情,电子邮件并不是真正可靠的——无论 To: 字段中出现什么内容,您都可以收到消息,并且还有许多具有类似语义的其他 header (例如,Resent-To: 类似于 To:,有时有一个 Sender: header 比 From: 更可靠等)。

#lang racket/base

(define imap-server "imap.somewhere.com")
(define imap-port-no 1234)
(define username "----")
(define pw "----")
(define mailbox-name "INBOX")

(require racket/list openssl/mzssl net/imap net/head)

(define (test-connect)
(let ([c (ssl-make-client-context)])
(let-values ([(in out) (ssl-connect imap-server imap-port-no c)])
(imap-connect* in out username pw mailbox-name))))

(define-values [imap messages recent] (test-connect))

(define (get-interesting-headers ns)
(for/list ([x (imap-get-messages imap ns '(header))])
(filter-map
(λ (x)
(define s
(string->symbol (string-downcase (bytes->string/utf-8 (car x)))))
(and (memq s '(from to date subject))
(cons s (bytes->string/utf-8 (cdr x)))))
(extract-all-fields (car x)))))
(get-interesting-headers (for/list ([i messages]) (add1 i)))

关于imap - 在 Racket 中使用 IMAP 阅读电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856173/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com