英文:
line too long error in imap in go
问题
我正在使用go-imap下载电子邮件。今天我收到了以下错误信息:
imap: line too long ("* SEARCH 45081 45082 45083 45084 45085 45086 45087 45088 45089 45090 45091 45092 45093 45094 45095 45096 45097 45098 45099 45100 45101 45102 45103 45104 45105 45106 45107 45108 45109 45110 45111 45112 45113 45114 45115 45116 45117 45118 45119 45120 45121 45122 45123 45124 45125 45126 45127 45128 45129 45130 45131 45132 45133 45134 45135 45136 45137 45138 45139 45140 45141 45142 45143 45144 45145 45146 45147 45148 45149 45150 45151 45152 45153 45154 45155 45156 45157 45158 45159 45160 45161 45162 45163 45164 45165 45166 45167 45168 45169 45170 45171 45172 45173 45174 45175 45176 45177 45178 45179 45180 45181 45182 45183 45184 45185 45186 45187 45188 45189 45190 45191 45192 45193 45194 45195 45196 45197 45198 45199 45200 45201 45202 45203 45204 45205 45206 45207 45208 45209 45210 45211 45212 45213 45214 45215 45216 45217 45218 45219 45220 45221 45222 45223 45224 45225 45226 45227 45228 45229 45230 45231 45232 45233 45234 45235 45236 45237 45238 45239 45240 45241 45242 45243 45244 45245 45246 45247 45248 45249 4"...)
附近的代码是:
cmd = ReportOK(c.UIDSearch("1:* UNSEEN"))
之后的错误是:
runtime error: index out of range
附近的代码是:
set, _ := imap.NewSeqSet("")
set.AddNum(cmd.Data[0].SearchResults()...)
在身份验证之后、解析消息之前的所有代码如下:
if c.Caps["QUOTA"] {
ReportOK(c.GetQuotaRoot("INBOX"))
}
cmd = ReportOK(c.List("", ""))
c.Select("INBOX", false)
cmd = ReportOK(c.UIDSearch("1:* UNSEEN"))
set, _ := imap.NewSeqSet("")
set.AddNum(cmd.Data[0].SearchResults()...)
cmd, _ = c.UIDFetch(set, "RFC822", "RFC822.HEADER", "UID")
有人能帮忙吗?我将非常感激。
英文:
I'm downloading emails by go-imap. And today I received this error:
imap: line too long ("* SEARCH 45081 45082 45083 45084 45085 45086 45087 45088 45089 45090 45091 45092 45093 45094 45095 45096 45097 45098 45099 45100 45101 45102 45103 45104 45105 45106 45107 45108 45109 45110 45111 45112 45113 45114 45115 45116 45117 45118 45119 45120 45121 45122 45123 45124 45125 45126 45127 45128 45129 45130 45131 45132 45133 45134 45135 45136 45137 45138 45139 45140 45141 45142 45143 45144 45145 45146 45147 45148 45149 45150 45151 45152 45153 45154 45155 45156 45157 45158 45159 45160 45161 45162 45163 45164 45165 45166 45167 45168 45169 45170 45171 45172 45173 45174 45175 45176 45177 45178 45179 45180 45181 45182 45183 45184 45185 45186 45187 45188 45189 45190 45191 45192 45193 45194 45195 45196 45197 45198 45199 45200 45201 45202 45203 45204 45205 45206 45207 45208 45209 45210 45211 45212 45213 45214 45215 45216 45217 45218 45219 45220 45221 45222 45223 45224 45225 45226 45227 45228 45229 45230 45231 45232 45233 45234 45235 45236 45237 45238 45239 45240 45241 45242 45243 45244 45245 45246 45247 45248 45249 4"...)
near:
cmd = ReportOK(c.UIDSearch("1:* UNSEEN"))
and next error (after the above):
runtime error: index out of range
near:
set, _ := imap.NewSeqSet("")
set.AddNum(cmd.Data[0].SearchResults()...)
All my code after authentication and before parsing messages is heer:
if c.Caps["QUOTA"] {
ReportOK(c.GetQuotaRoot("INBOX"))
}
cmd = ReportOK(c.List("", ""))
c.Select("INBOX", false)
cmd = ReportOK(c.UIDSearch("1:* UNSEEN"))
set, _ := imap.NewSeqSet("")
set.AddNum(cmd.Data[0].SearchResults()...)
cmd, _ = c.UIDFetch(set, "RFC822", "RFC822.HEADER", "UID")
Can anyone help? I will be grateful.
答案1
得分: 3
你似乎在这里超过了缓冲区大小,这里是包文档中的一条说明:
var BufferSize = 65536
BufferSize
设置发送和接收缓冲区的大小(以字节为单位)。这也是物理行的长度限制。在实践中,客户端应将行长度限制在约1000字节左右,如RFC 2683中所述。
英文:
You seem to be surpassing the buffer size here, here is a note from the package's docs :
> var BufferSize = 65536
>
> BufferSize
sets the size of the send and receive buffers (in bytes). This is also the length limit of physical lines. In practice, the client should restrict line length to approximately 1000 bytes, as described in RFC 2683.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论