Sample code for 30+ languages & platforms
Go

Send HTML Email with Attachments

See more SMTP Examples

Demonstrates how to send an HTML email with file 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.

    mailman := chilkat.NewMailMan()

    mailman.SetSmtpHost("smtp.my-starttls-mail-server.com")

    mailman.SetSmtpUsername("MY-SMTP-USERNAME")
    mailman.SetSmtpPassword("MY-SMTP-PASSWORD")

    mailman.SetStartTLS(true)
    mailman.SetSmtpPort(587)

    // Create a new email object
    email := chilkat.NewEmail()
    email.SetSubject("Test SMTP API to Send HTML Email with Attachments")
    email.SetFrom("Joe Programmer <joe@my-starttls-mail-server.com>")
    email.AddTo("Chilkat Support","support@chilkatsoft.com")

    // Add a plain-text alternative body, which will likely never be seen.
    // (It is shown if the receiving email client is incapable of displaying HTML email.)
    email.AddPlainTextAlternativeBody("This is a plain-text alternative body...")

    // Our HTML will include an image, so add the related image here.
    contentIdStarfish := email.AddRelatedFile("qa_data/jpg/starfish.jpg")
    if email.LastMethodSuccess() != true {
        fmt.Println(email.LastErrorText())
        mailman.DisposeMailMan()
        email.DisposeEmail()
        return
    }

    // The src attribute for the image tag is set to the contentIdStarfish:
    sbHtml := chilkat.NewStringBuilder()
    sbHtml.Append("<html><body><p>This is an HTML email with an embedded image.</p>")
    sbHtml.Append("<p><img src=\"cid:CONTENT_ID_STARFISH\" /></p></body></html>")
    numReplacements := sbHtml.Replace("CONTENT_ID_STARFISH",*contentIdStarfish)

    email.AddHtmlAlternativeBody(*sbHtml.GetAsString())

    // Finally, add some attachments to the email.
    // Add a file attachment.
    success = email.AddFileAttachment2("qa_data/pdf/fishing.pdf","application/pdf")
    if success != true {
        fmt.Println(email.LastErrorText())
        mailman.DisposeMailMan()
        email.DisposeEmail()
        sbHtml.DisposeStringBuilder()
        return
    }

    // Add an attachment where the content is contained in a string.
    content := "This is the content of the 2nd attached file."
    email.AddStringAttachment("someText.txt",content)

    // Send the HTML email.
    success = mailman.SendEmail(email)
    if success != true {
        fmt.Println(mailman.LastErrorText())
        mailman.DisposeMailMan()
        email.DisposeEmail()
        sbHtml.DisposeStringBuilder()
        return
    }

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

    fmt.Println("HTML email with attachments sent!")

    mailman.DisposeMailMan()
    email.DisposeEmail()
    sbHtml.DisposeStringBuilder()