T#004 – Inviare una e-mail
Con il Tutorial di oggi impareremo a inviare una e-mail dalla nostra applicazione. Dopo aver inserito l’indirizzo del destinatario, l’oggetto e il testo della mail, basterà premere il pulsante “Invia” per far aprire l’applicazione nativa Mail presente in tutti gli iPhone con tutti i campi, passati dalla nostra applicazione, pronti per l’invio al destinatario scelto.
Aprite Xcode e create un nuovo progetto. Dalla solita finestra scegliete il template “View-based Application” e cliccate su “Choose“. Nel campo “Save As” inserite il nome per il programma, ad esempio inviaMail, scegliete la posizione per il vostro progetto, quindi salvate.
Si aprirà la finestra principale di Xcode. Aprite il file dell’interfaccia MailViewController.h e inserite il seguente codice:
#import <UIKit/UIKit.h> @interface MailViewController : UIViewController { IBOutlet UITextField *txtA; IBOutlet UITextField *txtOggetto; IBOutlet UITextView *txtTesto; } -(void)invia:(id)sender; @end
Come potete vedere dal codice abbiamo dichiarato tre oggetti, due UITextField e una UITextView, che andremo poi a collegare ai rispettivi oggetti creati tramite Interface Builder, come avrete intuito dall’istruzione IBOutlet. Abbiamo inoltre dichiarato il metodo “invia” che andremo poi a collegare ad un pulsante creato anch’esso in IB.
A questo punto aprite il file di implementazione della nostra classe MailViewController.m e inserite il codice per il metodo dichiarato nel file .h :
-(void)invia:(id)sender{ NSString *stringaMail = [NSString stringWithFormat:@"mailto:?to=%@&subject=%@&body=%@", [[txtA text] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding], [[txtOggetto text] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding], [[txtTesto text] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:stringaMail]]; }
Qui non facciamo altro che creare una stringa utilizzando il formato classico del “mailto” usato in HTML per l’invio delle e-mail passando nel modo corretto i campi inseriti dall’utente tramite l’interfaccia grafica: il destinatario, l’oggetto e il testo della mail. Questi vengono infatti prelevati dalle due UITextField e dall’UITextView dichiarati in precedenza e che andremo a creare tramite Interface Builder a breve.
Ricordate di inserire inoltre il metodo per la chiusura della tastiera, se non volete che una volta aperta rimanga nell’interfaccia utente nascondendo eventuali altre sue parti:
// Metodo per far chiudere la tastiera -(BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES; }
A questo punto non ci resta che aprire il file MailViewController.xib per creare la nostra interfaccia grafica e i rispettivi collegamenti con la classe.
Trascinate nella View i seguenti oggetti:
- N. 2 UITextField
- N. 1 UITextView
- N. 3 UILabel
- N. 1 UIButton
Modificate la loro posizione e le loro proprietà in modo da ottenere una vista simile a quella mostrata in figura:

(Ricordate di mettere la spunta sulla proprietà “Editable” della UITextView, che usiamo per semplice comodità al posto di una terza UITextField).
Cliccate quindi su File’s Owner e dalla finestra “Connection” collegate txtA con la UITextField dove andrà inserito il destinatario, txtOggetto con quella dove si inserirà l’oggetto della mail e txtTesto con la UITextView (editabile) dove l’utente inserirà il testo vero e proprio della mail.
Collegate quindi il metodo Invia: con il pulsante creato facendo attenzione a selezionare “Touch Up Inside” una volta rilasciato il mouse sull’UIButton.
Ricordare infine di collegare, come già visto nel Tutorial 02, gli outlet delle UIText con File’s Owner per far sparire la tastiera quando non serve.
A questo punto salvate, tornate a Xcode e cliccate su “Build and Run” per testare la vostra applicazione.
Tenete presente che occorre avere l’applicazione Mail con un account di posta configurato per una corretta esecuzione dell’applicazione che funzionerà perfettamente se installato direttamente su iPhone. Nella prossima immagine il programma in esecuzione.

Video Tutorial
by David Pollak
Parte 1
Parte 2


(1 voti, media: 4,00 su 5)














Tanto per iniziare voglio complimentarmi per i tutorial, veramente ben fatti e sopratutto utili.
Ho provato a fare questa App, tutto funziona tranne una cosa: il trucco per far chiudere la tastiera. Cioè, sui due oggetti “UITextField” funziona correttamente ma sul oggetto “UITextView” no, premendo return il cursore passa alla riga successiva.
Nel codice si scrive:
// Metodo per far chiudere la tastiera
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
Viene apertamente fatto riferimento alla “UITextField”, dove funziona, ma per la UITextView??? Non è possibile chiudere la tastiera? Quindi sarebbe meglio mettere il tasto “invia” nella parte alta della pagina in modo che non venga coperto?