IMAP은 이메일을 보내고 받는 데 사용되는 일반적인 네트워크 프로토콜입니다. Golang에서는 IMAP을 사용하여 메일을 쉽게 삭제할 수 있습니다. 이 기사에서는 Golang을 사용하여 IMAP 이메일을 삭제하는 방법을 소개합니다.
먼저 Golang에서 "net/imap" 및 "fmt" 라이브러리를 가져와야 합니다. 가져오기 코드는 다음과 같습니다.
import ( "net/imap" "fmt" )
다음으로 IMAP 서버에 대한 연결을 설정해야 합니다. 서버 주소, 사용자 이름, 비밀번호 등의 정보를 제공해야 합니다. IMAP 라이브러리의 "Dial" 방법을 사용하여 연결을 설정할 수 있습니다.
conn, err := imap.DialTLS(serverAddr, nil) if err != nil { log.Fatal(err) }
연결이 설정된 후 IMAP 서버에 로그인해야 합니다. 사용자 이름, 비밀번호 등의 정보를 제공해야 합니다. IMAP 서버에 로그인하려면 IMAP 라이브러리의 "로그인" 방법을 사용하십시오.
_, err = conn.Login(username, password) if err != nil { log.Fatal(err) }
성공적으로 로그인한 후 이메일을 삭제하려는 이메일 주소를 선택해야 합니다. IMAP 라이브러리의 "Select" 방법을 사용하여 사서함을 선택할 수 있습니다.
_, err = conn.Select("INBOX", false) if err != nil { log.Fatal(err) }
메일함을 선택한 후 삭제하려는 메일을 찾아야 합니다. IMAP 라이브러리의 "검색" 방법을 사용하여 메일을 검색할 수 있습니다. 이메일 제목, 보낸 사람, 기타 조건을 기준으로 검색할 수 있습니다.
// search for mails with 'subject' in subject and 'from' in sender criteria := imap.NewSearchCriteria() criteria.Header.Set("subject", "subject") criteria.Header.Set("from", "from") // execute search uids, err := conn.Search(criteria) if err != nil { log.Fatal(err) }
삭제하려는 메시지를 찾으면 해당 메시지를 삭제됨으로 표시해야 합니다. IMAP 라이브러리의 "Store" 메소드를 사용하여 메시지에 태그를 지정할 수 있습니다. 이 방법에서는 태그를 지정할 메시지의 시퀀스 번호와 태그 유형을 지정해야 합니다.
// mark mails as deleted seqSet := new(imap.SeqSet) seqSet.AddNum(uids...) delFlags := []interface{}{imap.DeletedFlag} err = conn.Store(seqSet, "+FLAGS", delFlags, nil) if err != nil { log.Fatal(err) }
마지막으로 플래그가 지정된 메시지를 삭제해야 합니다. 플래그가 지정된 메시지는 IMAP 라이브러리의 "말소" 방법을 사용하여 삭제할 수 있습니다.
// delete mails if err = conn.Expunge(nil); err != nil { log.Fatal(err) }
다음은 Golang을 사용하여 IMAP 이메일을 삭제하기 위한 전체 예시 코드입니다.
package main import ( "fmt" "log" "net/mail" "github.com/emersion/go-imap" "github.com/emersion/go-imap/client" "github.com/emersion/go-message/charset" ) func main() { // Connect to the server c, err := client.DialTLS("mail.example.com:993", nil) if err != nil { log.Fatal(err) } defer c.Logout() // Login if err := c.Login("user@example.com", "password"); err != nil { log.Fatal(err) } // Select mailbox mbox, err := c.Select("INBOX", false) if err != nil { log.Fatal(err) } // Search for messages charsetReader := charset.Reader msgs := make(chan *imap.Message, 10) done := make(chan error, 1) go func() { done <- c.List("", "INBOX", msgs) }() for msg := range msgs { r := msg.GetBody(&imap.BodySectionName{section}) if r == nil { continue } if _, err := mail.ReadMessage(charsetReader(r)); err != nil { log.Fatal(err) } // Delete message seqSet := new(imap.SeqSet) seqSet.AddNum(msg.SeqNum) item := imap.FormatFlagsOp(imap.AddFlags, true) flags := []interface{}{imap.DeletedFlag} if err := c.Store(seqSet, item, flags, nil); err != nil { log.Fatal(err) } } // Expunge deleted messages if err := c.Expunge(nil); err != nil { log.Fatal(err) } if err := <-done; err != nil { log.Fatal(err) } fmt.Println("Done!") }
위는 Golang을 사용하여 IMAP 이메일을 삭제하기 위한 프로세스 및 전체 코드 예시입니다.
위 내용은 Golang을 사용하여 IMAP 메시지를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!