保存IMAP审查诊断检查点
This commit is contained in:
parent
d772abdb86
commit
1c8a600d79
@ -166,6 +166,7 @@ func (s *serverSession) Fetch(w *imapserver.FetchWriter, numSet imap.NumSet, opt
|
|||||||
end = maxUID
|
end = maxUID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
log.WithContext(s.ctx).Infof("IMAP FETCH UID range start=%d end=%d mailbox=%s", start, end, s.currentMailbox)
|
||||||
emailList, err := list.GetEmailListByGroup(s.ctx, s.currentMailbox, list.ImapListReq{
|
emailList, err := list.GetEmailListByGroup(s.ctx, s.currentMailbox, list.ImapListReq{
|
||||||
Star: start,
|
Star: start,
|
||||||
End: end,
|
End: end,
|
||||||
@ -174,6 +175,7 @@ func (s *serverSession) Fetch(w *imapserver.FetchWriter, numSet imap.NumSet, opt
|
|||||||
log.WithContext(s.ctx).WithError(err).Error("query IMAP messages for UID fetch failed")
|
log.WithContext(s.ctx).WithError(err).Error("query IMAP messages for UID fetch failed")
|
||||||
return &imap.Error{Type: imap.StatusResponseTypeNo, Text: "Fetch failed"}
|
return &imap.Error{Type: imap.StatusResponseTypeNo, Text: "Fetch failed"}
|
||||||
}
|
}
|
||||||
|
log.WithContext(s.ctx).Infof("IMAP FETCH UID result count=%d", len(emailList))
|
||||||
if err := write(s.ctx, w, emailList, options); err != nil {
|
if err := write(s.ctx, w, emailList, options); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -319,6 +321,7 @@ func write(ctx *context.Context, w *imapserver.FetchWriter, emailList []*respons
|
|||||||
if options.UID {
|
if options.UID {
|
||||||
writer.WriteUID(uid)
|
writer.WriteUID(uid)
|
||||||
}
|
}
|
||||||
|
log.WithContext(ctx).Infof("IMAP FETCH write sequence=%d uid=%d ue_id=%d", sequence, uid, email.UeId)
|
||||||
if options.Envelope {
|
if options.Envelope {
|
||||||
env := buildEnvelope(email, traEmail)
|
env := buildEnvelope(email, traEmail)
|
||||||
writer.WriteEnvelope(env)
|
writer.WriteEnvelope(env)
|
||||||
|
|||||||
@ -270,6 +270,13 @@ func getEmailListByUidList(ctx *context.Context, groupName string, req ImapListR
|
|||||||
if err := db.Instance.SQL(sql, params...).Find(&relations); err != nil {
|
if err := db.Instance.SQL(sql, params...).Find(&relations); err != nil {
|
||||||
return nil, fmt.Errorf("query mailbox UID list: %w", err)
|
return nil, fmt.Errorf("query mailbox UID list: %w", err)
|
||||||
}
|
}
|
||||||
|
if len(relations) > 0 {
|
||||||
|
for _, relation := range relations {
|
||||||
|
if relation != nil {
|
||||||
|
fmt.Printf("IMAP UID relation id=%d email_id=%d status=%d group_id=%d\n", relation.ID, relation.EmailID, relation.Status, relation.GroupId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return hydrateIMAPEmailResponses(relations)
|
return hydrateIMAPEmailResponses(relations)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -330,6 +337,7 @@ func hydrateIMAPEmailResponses(relations []*response.UserEmailUIDData) ([]*respo
|
|||||||
if err := db.Instance.Table("email").Select("*").Where(Eq{"id": emailIDs}).Find(&stored); err != nil {
|
if err := db.Instance.Table("email").Select("*").Where(Eq{"id": emailIDs}).Find(&stored); err != nil {
|
||||||
return nil, fmt.Errorf("query mailbox messages: %w", err)
|
return nil, fmt.Errorf("query mailbox messages: %w", err)
|
||||||
}
|
}
|
||||||
|
fmt.Printf("IMAP hydrate email_ids=%v stored=%d\n", emailIDs, len(stored))
|
||||||
messageByID := make(map[int]*response.EmailResponseData, len(stored))
|
messageByID := make(map[int]*response.EmailResponseData, len(stored))
|
||||||
for _, message := range stored {
|
for _, message := range stored {
|
||||||
if message != nil {
|
if message != nil {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user