Sample code for 30+ languages & platforms
Objective-C

Send HTML Email with Attachments

See more SMTP Examples

Demonstrates how to send an HTML email with file attachments.

Chilkat Objective-C Downloads

Objective-C
#import <CkoMailMan.h>
#import <CkoEmail.h>
#import <NSString.h>
#import <CkoStringBuilder.h>

BOOL success = NO;

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

CkoMailMan *mailman = [[CkoMailMan alloc] init];

mailman.SmtpHost = @"smtp.my-starttls-mail-server.com";

mailman.SmtpUsername = @"MY-SMTP-USERNAME";
mailman.SmtpPassword = @"MY-SMTP-PASSWORD";

mailman.StartTLS = YES;
mailman.SmtpPort = [NSNumber numberWithInt:587];

// Create a new email object
CkoEmail *email = [[CkoEmail alloc] init];
email.Subject = @"Test SMTP API to Send HTML Email with Attachments";
email.From = @"Joe Programmer <joe@my-starttls-mail-server.com>";
[email AddTo: @"Chilkat Support" emailAddress: @"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.
NSString *contentIdStarfish = [email AddRelatedFile: @"qa_data/jpg/starfish.jpg"];
if (email.LastMethodSuccess != YES) {
    NSLog(@"%@",email.LastErrorText);
    return;
}

// The src attribute for the image tag is set to the contentIdStarfish:
CkoStringBuilder *sbHtml = [[CkoStringBuilder alloc] init];
[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>"];
int numReplacements = [[sbHtml Replace: @"CONTENT_ID_STARFISH" replacement: contentIdStarfish] intValue];

[email AddHtmlAlternativeBody: [sbHtml GetAsString]];

// Finally, add some attachments to the email.
// Add a file attachment.
success = [email AddFileAttachment2: @"qa_data/pdf/fishing.pdf" contentType: @"application/pdf"];
if (success != YES) {
    NSLog(@"%@",email.LastErrorText);
    return;
}

// Add an attachment where the content is contained in a string.
NSString *content = @"This is the content of the 2nd attached file.";
[email AddStringAttachment: @"someText.txt" str: content];

// Send the HTML email.
success = [mailman SendEmail: email];
if (success != YES) {
    NSLog(@"%@",mailman.LastErrorText);
    return;
}

success = [mailman CloseSmtpConnection];
if (success != YES) {
    NSLog(@"%@",@"Connection to SMTP server not closed cleanly.");
}

NSLog(@"%@",@"HTML email with attachments sent!");