Golang emersion go-imap如何获取回复的发件人名称

huangapple go评论94阅读模式
英文:

Golang emersion go-imap how to get the name that did the reply

问题

我正在使用Golang的Emersion包通过IMAP获取传入的电子邮件,在这里我正在尝试使用InReplyTo函数,但我得到的是发件人的ID,例如:CABkN-Fgn2o7L9Rqep2WDE70tfmk07O35+Ta2Snr+CoDdHcAD6rg@mail.gmail.com。我该如何将ID更改为回复名称?

这是我的代码:

mbox, err := c.Select("INBOX", false)
if err != nil {
    log.Fatal(err)
}
log.Println("Flags for INBOX:", mbox.Flags)

// 获取最后4条消息
from := uint32(1)
to := mbox.Messages
if mbox.Messages > 1 {
    // 这里使用无符号整数,只有在结果大于0时才进行减法运算
    from = mbox.Messages - 1
}
seqset := new(imap.SeqSet)
seqset.AddRange(from, to)

messages := make(chan *imap.Message, 10)
done = make(chan error, 1)
go func() {
    done <- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, messages)
}()

log.Println("Last 4 messages:")
for msg := range messages {
    log.Println("=====================================")
    tes := msg.Envelope.From
    for i, v := range tes {
        log.Println("#########################")
        fmt.Println(i)
        fmt.Println(v.PersonalName)
        log.Println("#########################")
    }
    // fmt.Println(tes)
    // log.Println("Subject " + msg.Envelope.From)
    log.Println("In REply" + msg.Envelope.InReplyTo)
    log.Println("=====================================")
}

if err := <-done; err != nil {
    log.Fatal(err)
}

log.Println("Done!")

希望对你有帮助!

英文:

I'm here using the Golang Emersion package to get incoming email via IMAP, here I'm trying to use the InReplyTo function, but what I get is the ID of the sender, for example:
<CABkN-Fgn2o7L9Rqep2WDE70tfmk07O35+Ta2Snr+CoDdHcAD6rg@mail.gmail.com>

how do i change the ID to reply name,

this is my code

mbox, err := c.Select(&quot;INBOX&quot;, false)
if err != nil {
	log.Fatal(err)
}
log.Println(&quot;Flags for INBOX:&quot;, mbox.Flags)

// Get the last 4 messages
from := uint32(1)
to := mbox.Messages
if mbox.Messages &gt; 1 {
	// We&#39;re using unsigned integers here, only subtract if the result is &gt; 0
	from = mbox.Messages - 1
}
seqset := new(imap.SeqSet)
seqset.AddRange(from, to)

messages := make(chan *imap.Message, 10)
done = make(chan error, 1)
go func() {
	done &lt;- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, messages)
}()

log.Println(&quot;Last 4 messages:&quot;)
for msg := range messages {
	log.Println(&quot;=====================================&quot;)
	tes := msg.Envelope.From
	for i, v := range tes {
		log.Println(&quot;#########################&quot;)
		fmt.Println(i)
		fmt.Println(v.PersonalName)
		log.Println(&quot;#########################&quot;)
	}
	// fmt.Println(tes)
	// log.Println(&quot;Subject &quot; + msg.Envelope.From)
	log.Println(&quot;In REply&quot; + msg.Envelope.InReplyTo)
	log.Println(&quot;=====================================&quot;)
}

if err := &lt;-done; err != nil {
	log.Fatal(err)
}

log.Println(&quot;Done!&quot;)

答案1

得分: 1

InReplyTo:In-Reply-To头部。包含父级Message-Id。这就是你获取到Id的原因。

使用ReplyTo代替InReplyTo

log.Println("In REply" + msg.Envelope.ReplyTo)

请检查以下内容:

type Envelope struct {
    // 消息日期。
    Date time.Time
    // 消息主题。
    Subject string
    // 发件人头部地址。
    From []*Address
    // 消息发送者。
    Sender []*Address
    // 回复地址头部地址。
    ReplyTo []*Address
    // 收件人头部地址。
    To []*Address
    // 抄送头部地址。
    Cc []*Address
    // 密送头部地址。
    Bcc []*Address
    // In-Reply-To头部。包含父级Message-Id。
    InReplyTo string
    // Message-Id头部。
    MessageId string
}
英文:

InReplyTo :- The In-Reply-To header. Contains the parent Message-Id. This is why you are getting the Id.

Use ReplyTo instead of InReplyTo.

log.Println(&quot;In REply&quot; + msg.Envelope.ReplyTo)

Check this :

type Envelope struct {
	// The message date.
	Date time.Time
	// The message subject.
	Subject string
	// The From header addresses.
	From []*Address
	// The message senders.
	Sender []*Address
	// The Reply-To header addresses.
	ReplyTo []*Address
	// The To header addresses.
	To []*Address
	// The Cc header addresses.
	Cc []*Address
	// The Bcc header addresses.
	Bcc []*Address
	// The In-Reply-To header. Contains the parent Message-Id.
	InReplyTo string
	// The Message-Id header.
	MessageId string
}

huangapple
  • 本文由 发表于 2022年1月3日 11:03:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/70561322.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定