Sample code for 30+ languages & platforms
Objective-C

Send a Raw SMTP Command

See more SMTP Examples

Demonstrates the Chilkat MailMan.SmtpSendRawCommand method, which sends a raw command to the SMTP server and returns the server's response. The second argument specifies the charset to use if the command contains non-US-ASCII characters, and the third indicates whether to base64-encode the command before sending. This example sends a raw NOOP on an open connection.

Background: SMTP is a line-based text protocol (EHLO, MAIL FROM, RCPT TO, DATA, QUIT), so a raw-command hook lets you issue anything Chilkat doesn't wrap — a server extension, or a custom step during a manual auth exchange. The base64 flag exists because some SMTP exchanges (notably AUTH challenge/response) require the argument to be base64-encoded on the wire.

Chilkat Objective-C Downloads

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

BOOL success = NO;

//  Demonstrates the MailMan.SmtpSendRawCommand method, which sends a raw command to the SMTP
//  server and returns the server's response.  The 2nd argument is the charset used if the
//  command contains non-US-ASCII characters, and the 3rd indicates whether to base64-encode
//  the command before sending.

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

//  Configure the SMTP server connection.
mailman.SmtpHost = @"smtp.example.com";
mailman.SmtpPort = [NSNumber numberWithInt:465];
mailman.SmtpSsl = YES;
mailman.SmtpUsername = @"user@example.com";
mailman.SmtpPassword = @"myPassword";

success = [mailman OpenSmtpConnection];
if (success == NO) {
    NSLog(@"%@",mailman.LastErrorText);
    return;
}

//  Send the raw SMTP NOOP command (not base64-encoded).
NSString *response = [mailman SmtpSendRawCommand: @"NOOP" charset: @"us-ascii" bEncodeBase64: NO];
if (mailman.LastMethodSuccess == NO) {
    NSLog(@"%@",mailman.LastErrorText);
    return;
}

NSLog(@"%@%@",@"NOOP response: ",response);

success = [mailman CloseSmtpConnection];
if (success == NO) {
    NSLog(@"%@",mailman.LastErrorText);
    return;
}