Sample code for 30+ languages & platforms
Go

Send Email With Attachments

See more SMTP Examples

Demonstrates how to send an email with attachments.

Chilkat Go Downloads

Go
    success := false

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // The mailman object is used for sending (SMTP) and receiving (POP3) email.
    mailman := chilkat.NewMailMan()

    // Set the SMTP server.
    mailman.SetSmtpHost("smtp.my-tls-mail-server.com")

    // Set the SMTP login/password (if required)
    mailman.SetSmtpUsername("MY_SMTP_USERNAME")
    mailman.SetSmtpPassword("MY_SMTP_PASSWORD")

    // Connect to SMTP port 465 using TLS.
    mailman.SetSmtpSsl(true)
    mailman.SetSmtpPort(465)

    // Create a new email object
    email := chilkat.NewEmail()

    email.SetSubject("This is a test")
    email.SetBody("This is a test")
    email.SetFrom("Chilkat Support <support@chilkatsoft.com>")
    success = email.AddTo("Chilkat Admin","admin@chilkatsoft.com")
    // To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.

    // Add some attachments.
    // The AddFileAttachment method returns the value of the content-type it chose for the attachment.
    contentType := email.AddFileAttachment("qa_data/jpg/starfish.jpg")
    if email.LastMethodSuccess() != true {
        fmt.Println(email.LastErrorText())
        mailman.DisposeMailMan()
        email.DisposeEmail()
        return
    }

    contentType = email.AddFileAttachment("qa_data/pdf/fishing.pdf")
    if email.LastMethodSuccess() != true {
        fmt.Println(email.LastErrorText())
        mailman.DisposeMailMan()
        email.DisposeEmail()
        return
    }

    // Call SendEmail to connect to the SMTP server and send.
    // The connection (i.e. session) to the SMTP server remains
    // open so that subsequent SendEmail calls may use the
    // same connection.  
    success = mailman.SendEmail(email)
    if success != true {
        fmt.Println(mailman.LastErrorText())
        mailman.DisposeMailMan()
        email.DisposeEmail()
        return
    }

    success = mailman.CloseSmtpConnection()
    if success != true {
        fmt.Println("Connection to SMTP server not closed cleanly.")
    }

    fmt.Println("Mail with attachments sent!")

    mailman.DisposeMailMan()
    email.DisposeEmail()