Go
Go
Fetch Single Email by UID or Sequence Number
Assuming the UID is known, download a single email by UID from an IMAP mail server.Chilkat Go Downloads
success := false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
imap := chilkat.NewImap()
// Connect to an IMAP server.
// Use TLS
imap.SetSsl(true)
imap.SetPort(993)
success = imap.Connect("imap.example.com")
if success == false {
fmt.Println(imap.LastErrorText())
imap.DisposeImap()
return
}
// Login
success = imap.Login("***","***")
if success == false {
fmt.Println(imap.LastErrorText())
imap.DisposeImap()
return
}
// Select an IMAP mailbox
success = imap.SelectMailbox("Inbox")
if success == false {
fmt.Println(imap.LastErrorText())
imap.DisposeImap()
return
}
email := chilkat.NewEmail()
uid := 2014
isUid := true
success = imap.FetchEmail(false,uid,isUid,email)
if success == false {
fmt.Println(imap.LastErrorText())
imap.DisposeImap()
email.DisposeEmail()
return
}
// Display the From and Subject
fmt.Println(email.FromAddress())
fmt.Println(email.Subject())
// Display the Body property, which is the default body.
// If an email has an HTML body, the Body property contains
// the HTML source. Otherwise it contains the plain-text
// body.
fmt.Println("---- EMAIL BODY ----")
fmt.Println(email.Body())
fmt.Println("--------------------")
// Display the recipients:
var j int
for j = 0; j <= email.NumTo() - 1; j++ {
fmt.Println(*email.GetToName(j), ", ", *email.GetToAddr(j))
}
for j = 0; j <= email.NumCC() - 1; j++ {
fmt.Println(*email.GetCcName(j), ", ", *email.GetCcAddr(j))
}
// Show the total size of the email, including body and attachments:
fmt.Println(email.Size())
// When a full email is downloaded, we would use the
// email.NumAttachments property in conjunction with the
// email.GetMailAttach* methods.
// However, when an email object contains only the header,
// we need to access the attachment info differently:
numAttach := imap.GetMailNumAttach(email)
fmt.Println(numAttach)
for j = 0; j <= numAttach - 1; j++ {
fmt.Println(*imap.GetMailAttachFilename(email,j))
attachSize := imap.GetMailAttachSize(email,j)
fmt.Println(" size = ", attachSize, " bytes")
}
fmt.Println("--")
// Disconnect from the IMAP server.
success = imap.Disconnect()
imap.DisposeImap()
email.DisposeEmail()