Product

Objective-C-Mailgun-SDK jetzt verfügbar

Nach einer kürzlichen Reise nach San Antonio beschloss ich, eine Objective-C-Schnittstelle hinzuzufügen, um E-Mails über Mailgun mit meinem eigenen iOS zu senden.
Bild für Objective-C-Mailgun-SDK jetzt verfügbar

Dieser Beitrag wurde ursprünglich von Jay Baird im Rackspace-DevOps-Blog. Das Rackspace-Team nutzt Mailgun bereits für eine Vielzahl von Projekten (wie dieses) und hat gerade ein SDK zur Integration von Mailgun in iOS-Apps als Open Source veröffentlicht. Jay sitzt im Büro von Rackspace in San Francisco direkt hinter dem Mailgun-Team. Wir veröffentlichen den vollständigen Beitrag hier auf unserem Blog, empfehlen Ihnen aber wärmstens, sich den Rackspace-DevOps-Blog für weitere gute technische Artikel anzusehen.

Einer meiner Lieblingsdienste hier bei Rackspace ist Mailgun, eine Sammlung von APIs, mit denen Sie über eine REST-API E-Mails versenden und Mailinglisten verwalten können. Nach einer kürzlichen Reise nach San Antonio beschloss ich, eine Objective-C-Schnittstelle hinzuzufügen, um E-Mails über Mailgun mit meiner eigenen iOS-Schnittstelle zu senden, anstatt Apples MFMailComposeViewController zu verwenden. Diese Bibliothek ist jetzt als Open Source auf Github verfügbar und erhältlich über Cocoapods.

Installation

Um das Mailgun-SDK zu installieren, können Sie entweder das fantastische Cocoapods verwenden oder direkt aus der Quelle installieren, indem Sie Mailgun.(h|m) und MGMessage.(h|m) zu Ihrem Xcode-Projekt hinzufügen. Wenn Sie sich für die manuelle Installation entscheiden, müssen Sie auch die Anweisungen zur Installation der AFNetworking -Bibliothek befolgen.

Verwendung des Mailgun-SDKs

Derzeit sind die einzigen Funktionen der Mailgun-API, die das SDK unterstützt, das Senden von E-Mails, das Abonnieren von Mailinglisten und das Abmelden von Mailinglisten. Ich war der Meinung, dass dies die häufigsten Funktionen sind, die das App-Entwicklungsteam verwenden würde, aber in Zukunft werden weitere Funktionen der Mailgun-API hinzugefügt. Die vollständige Dokumentation der Bibliothek finden Sie im Docs-Verzeichnis auf Github oder unter <cocoadocs.org.

Eine Nachricht senden

Um schnell eine Nachricht über das Mailgun-SDK zu senden, erstellen wir unseren Client mit der Klassenmethode clientWithDomain:apiKey:. Die Argumente für diese Methode sind Ihre spezifische Mailgun-Domain und Ihr API-Schlüssel. Für dieses Beispiel verwenden wir samples.mailgun.org und key-3ax6xnjp29jd6fds4gc373sgvjxteol0.

Mailgun *mailgun = [Mailgun clientWithDomain:@"samples.mailgun.org" apiKey:@"key-3ax6xnjp29jd6fds4gc373sgvjxteol0"];

Der Nachrichtenversand kann auf verschiedene Weise erfolgen. Sie können die Instanzmethode sendMessageTo:from:subject:body verwenden, um schnell eine einfache, einmalige Nachricht wie folgt zu senden:

[mailgun sendMessageTo:@"Jay Baird " from:@"Excited User " subject:@"Mailgun is awesome!" body:@"A unicode snowman for you! "];

Sie können auch eine funktionsreichere Nachricht mit dem MGMessage-Objekt erstellen. Hier erstelle ich ein MGMessage-Objekt mit dem Bild einer Katze als Anhang, da das Internet ausschließlich zur Verbreitung von Katzenbildern existiert, und sende es über das SDK:

UIImage *catImage = [UIImage imageNamed:@"cat-pic-01"]; MGMessage *message = [MGMessage messageFrom:@"Excited User " to:@"Jay Baird " subject:@"Mailgun is awesome!" body:@"Mailgun is great, here is a picture of a cat."];

[message addImage:catImage withName:@”cat-pic-01″ type:PNGFileType];

Dadurch wird der von mir erstellten MGMessage ein UIImage angehängt. Die Daten aus dem UIImage werden der Nachricht als Anhang hinzugefügt.

Es existiert eine identische Schnittstelle für OS X, die ein NSImage und einen NSBitmapImageFileType akzeptiert.

Sobald unsere Nachricht erstellt ist, können wir Empfänger über die Methode addRecipient: sowie CC- und BCC-Empfänger über addCC: und addBCC: hinzufügen und auch Tags, Variablen und eine ganze Reihe anderer Funktionen, die unterstützt werden von der Mailgun-APIWerfen Sie einen Blick in den Header von MGMessage.h, um alles zu sehen, was unterstützt wird.

Um diese speziell erstellte Nachricht zu senden, können Sie die Client-Methode sendMessage: oder die blockbasierte Callback-Methode sendMessage:success:failure: verwenden. Hier verwenden wir letztere, um eine Nachricht anzuzeigen, wenn die MGMessage erfolgreich gesendet wurde, oder einen Fehler anzuzeigen, falls ein Fehler aufgetreten ist.

[mailgun sendMessage:message success:^(NSString *messageId) {
NSLog(@"Message %@ sent successfully!", messageId);
} failure:^(NSError *error) {
NSLog(@"Error sending message. The error was: %@", [error userInfo]);
}];

Mailinglisten abonnieren und abmelden

Die Mailinglisten von Mailgun bieten eine bequeme Möglichkeit, durch die Verwendung einer Alias-E-Mail-Adresse an mehrere Empfänger zu senden. Mailgun sendet eine Kopie der an die Alias-Adresse gesendeten Nachricht an alle, die die Mailingliste abonniert haben. Das Hinzufügen einer Abonnieren-/Abmelden-Funktion zu Ihrer App kann eine großartige Möglichkeit sein, engagiert zu bleiben und mit Ihren Kunden in Kontakt zu bleiben, indem Sie ihnen regelmäßige Updates und Tipps senden. Um einen Nutzer für eine Mailingliste anzumelden, verwenden wir denselben Mailgun-Client, den wir im ersten Beispiel erstellt haben:

Mailgun *mailgun = [Mailgun clientWithDomain:@"samples.mailgun.org" apiKey:@"key-3ax6xnjp29jd6fds4gc373sgvjxteol0"];

Für dieses Beispiel habe ich einen AboutViewController erstellt, der ein UITextFieldv besitzt, in das ein Nutzer seine E-Mail-Adresse eingeben und auf eine Abonnieren-Schaltfläche tippen kann. So verarbeite ich die Aktion der Abonnieren-Schaltfläche:

UITextField *mailTextField = [[UITextField alloc] initWithFrame:CGRectZero];

[mailgun subscribeToList:@”news@sampleapp.org” email:mailTextField.text success:^{
NSLog(@”Successfully subscribed user to mailing list!”);
} failure:^(NSError *error) {
NSLog(@”There was an error while subscribing to the mailing list: %@”, [error userInfo]

); }];

Die Success- und Failure-Blöcke können verwendet werden, um dem Nutzer weitere Informationen anzuzeigen, Analysen zu verfolgen und den Fortschritt ein- bzw. auszublenden, während das SDK die erforderlichen API-Aufrufe durchführt.

Für die Abmeldung ist der Vorgang ähnlich. Wir nehmen die E-Mail-Adresse eines abonnierten Nutzers, in diesem Fall verwenden wir meine E-Mail-Adresse jay.baird@rackspace.com und melden uns von der SampleApp-Mailingliste ab:

NSString *emailAddress = @"jay.baird@rackspace.com";

[mailgun unsubscribeToList:@”news@sampleapp.org” email:emailAddress success:^{
NSLog(@”Successfully removed %@ from the mailing list”, emailAddress);
} failure:^(NSError *error) {
NSLog(@”Error removing address from mailing list: %@”, [error userInfo]

); }];

HINWEIS: Wenn ein Nutzer eine Mailingliste nicht abonniert hat, ruft diese Methode den Failure-Block mit einem 404-Fehler auf. Dies ist normal und sollte entsprechend gehandhabt werden.

Ich hoffe, diese kurze Einführung in das neue Mailgun-SDK weckt bei Ihnen die gleiche Begeisterung wie bei mir, Mailgun-Funktionen in Ihr nächstes OS X- oder iOS-Projekt aufzunehmen. Sie können das Projekt gerne forken und sich daran beteiligen, oder melden Sie gefundene Probleme auf unserer Github-Seite.