Monotouch – Inviare email con Iphone

Ci sono due metodi per inviare sms utilizzando monotouch:

  1. Usando OpenUrl (Pre Os 4.0)
  2. Usando MFMessageComposeViewController (Post Os 4.0)

Ho utilizzato i due scenari ma MFMessageComposeViewControllr è preferibile come opzione per le seguenti ragioni :

  1. OpenUrl forza la chiusura dell’applicazione e apre l’applicazione di invio Mail
  2. Non puoi includere HTML o caratteri Unicode nell’oggeto o nel testo del messaggio usando il metodo OpenUrl. Devi decodificare manualmente il carettere prima.MFMailComposeViewController ottimizza la codifica per te.


Usando OpenUrl
You use mailto: protocol. You can also use keywords such as bcc, cc, subject & body.

var url = NSUrl.FromString (string.Format ("mailto:{0}?subject={1}&body={2}",
                                             receiver, subject, body));
UIApplication.SharedApplication.OpenUrl (url);

Se l’oggetto o il testo del messaggio contengono HTML o caratteri Unicode, OpenUrl ritornerà un ArgumentNullException.
Chiamando il metodo OpenUrl l’applicazione sarà messa in background e sarà aperta l’applicazione per l’invio delle Mail.
L’utente potrà inviare o annullare l’invio e dovrà riaprire manualmente l’applicazione originale.

Usando MFMessageComposeViewController
Questo metodo ha bisogno di aver referenziata il Monotouch.MessageUI namespace.

MFMailComposeViewController mail = new MFMailComposeViewController ();
mail.MailComposeDelegate = new CustomMailComposeDelegate ();
mail.SetToRecipients(new string[] { receiver });
mail.SetSubject(subject);
mail.SetMessageBody(body, true);
this.NavigationController.PresentModalViewController (mail, true);

con il metodo CanSendText, saremo sicuri che il device può inviare sms (Ipod Touch non può).
Nell’ordine, definiremo la vista per comporre il messaggio estendendo MFMessageComposeViewControllerDelegate come visto precedentemente.

public class CustomMailComposeDelegate : MFMailComposeViewControllerDelegate
{
    public override void Finished (MFMailComposeViewController controller,
                                  MFMailComposeResult result, NSError error)
    {
        // TODO: Implement the method to handle
        // Cancelled, Failed or Sent result.
    }
}

Also notice the 2nd parameter for SetMessageBody method. By setting this to true, you specify that the body text contains HTML content.
PresentModalViewController presents the email message in a modal view within the application. Once the user elects to send or discard the message, the Finished delegate method is invoked and you come back to the calling view.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...