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 ライブラリの「Login」メソッドを使用して、IMAP サーバーにログインできます。
_, err = conn.Login(username, password) if err != nil { log.Fatal(err) }
ログインに成功したら、電子メールを削除する電子メール アドレスを選択する必要があります。メールボックスは、IMAP ライブラリの「選択」メソッドを使用して選択できます。
_, 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!") }
上記は、IMAP 電子メールを削除するプロセスと完全なコード例です。 Golangを使って。
以上がGolangを使ってIMAPメールを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。