Utilizzare la MessageUI Standard per spedire una mail

Questo piccolo snippet di codice è di gran lunga, e a mio avviso, il modo più veloce per inviare una mail tramite le API standard fornita dalla di iOS SDK (7+). Sicuramente mi ha aiutato risparmiandomi un sacco di tempo quando arrivavano richieste tipo “Hey possiamo fare questo email link clickabile?”. GRRR!

1.Pima di tutto importiamo la MessagUI come segue

[objc]
#import <MessageUI/MessageUI.h>
[/objc]

2.Aggiungiamo il codice alla nostra classe, in modo che implementi il delegato seguente

[objc]MFMailComposeViewControllerDelegate[/objc]

  1. Creiamo una proprietà di classe come questa (dategli il nome che volete, noi preferiamo nomi molto “parlanti” ed espliciti)

[objc]@property (strong, nonatomic)
MFMailComposeViewController *mailer;[/objc]

  1. Infine implementiamo il metodo in cui istanziare il

[objc]MFMailComposeViewController[/objc]

e comporre la mail

[objc]
-(void) sendMailTo: (NSString *) recipient {
    self.mailer = [[MFMailComposeViewController alloc] init];
self.mailer.mailComposeDelegate = self;

[self.mailer setSubject:@”My Fabolous Subject”];

NSArray *toRecipients = [NSArray arrayWithObjects:recipient, nil];
[self.mailer setToRecipients:toRecipients];

/* Potete scommentare il codice seguente, se avete
* immagini da inserire come attachments */
// UIImage *myImage = [UIImage imageNamed:@”myfabolousimage.png”];
// NSData *imageData = UIImagePNGRepresentation(myImage);
// [self.mailer addAttachmentData:imageData
// mimeType:@”image/png” fileName:@”myfabolousimage.png”];

NSString *emailBody = @””;
[self.mailer setMessageBody:emailBody isHTML:NO];

[self presentViewController:self.mailer animated:YES completion:nil];

}
[/objc]

  1. E certamente non possiamo lasciare il delegato

[objc]MFMailComposeViewControllerDelegate[/objc]

indietro, così, andremo ad implementare il metodo delegato come segue, in modo da avere il pieno controllo dei valori di ritorno del mail controller, dopo che ha finito il suo lavoro. Aggiungete questo metodo alla classe:

[objc]-(void)mailComposeController:
(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error {
if (error) {

} else {
[self.mailer dismissViewControllerAnimated:YES completion:nil];
}
}
[/objc]

  1. Godetevi i risultati! 🙂
Back to the Blog
Oimmei Logo
Take the first step,
contact us today!
Oimmei objects
Oimmei objects

Final Call 2025

Stiamo ufficialmente limitando le nuove collaborazioni:
Accetteremo solo altri [05] clienti per l’intero anno 2025.
Perché? Perché crediamo in partnership solide, mirate e di qualità. Preferiamo lavorare bene con pochi, piuttosto che fare tanto senza impatto.
Qualità prima di tutto. Sempre.

Se pensi che potremmo essere il partner giusto per i tuoi obiettivi, questo è il momento giusto per farti avanti. Registrati qui e raccontaci il tuo progetto:

Ti contatteremo solo se ci sarà una forte sintonia da entrambe le parti.
Una volta assegnati tutti i posti disponibili, le candidature resteranno chiuse fino alla fine dell’anno.