保存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
|
||||
}
|
||||
}
|
||||
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{
|
||||
Star: start,
|
||||
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")
|
||||
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 {
|
||||
return err
|
||||
}
|
||||
@ -319,6 +321,7 @@ func write(ctx *context.Context, w *imapserver.FetchWriter, emailList []*respons
|
||||
if options.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 {
|
||||
env := buildEnvelope(email, traEmail)
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
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))
|
||||
for _, message := range stored {
|
||||
if message != nil {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user