Desidero che la mia app utilizzi lo MFMailComposeViewController
per inviare un messaggio di posta elettronica in modo che il destinatario possa fare clic sullo url
incorporato per aprire il sito Web corrispondente. MFMailComposeViewController
non sembra supportarlo esplicitamente. Qualche idea?MFMailComposeViewController: come incorporare un link URL selezionabile nel corpo del messaggio di posta elettronica
risposta
:) Sì, si può fare questo:
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
composer.mailComposeDelegate = self;
[composer setSubject:subject];
[composer setMessageBody:message isHTML:YES];
cui messaggio è solo un NSString con contenuti HTML. All'interno puoi aggiungere tutto l'HTML che desideri.
Usa setMessageBody:isHTML:
e passare un collegamento HTML corretto nel corpo (<a href="your_url">your link text</a>
) e passare al parametro YES
isHTML
.
hai provato sul tuo codice il tuo suggerimento? L'ho provato prima di arrivare a questo sito web e, mi spiace dirlo, non funziona affatto. Il collegamento appare davvero in blu, l'HTML viene letto come html, ma non è possibile alcun collegamento. Quando clicco sul link posso semplicemente modificarlo ....
Qualche suggerimento migliore?
Ho cancellato la mia risposta precedente in quanto errata e irrilevante. Dopo che molti capelli mi hanno tirato I finalmente ho capito cosa stava succedendo nel mio caso ed è probabilmente quello che sta succedendo in questa domanda.
Quando si compone il corpo HTML per MFMailComposeViewController, è necessario impostare interruzioni di riga nell'HTML. Se una linea è lunga> 76 caratteri, il corpo sarà interpretato come segue:
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Se si mette interruzioni di riga in, il Content-Transfer-Encoding: quoted-printable
non accadrà e tutto funziona come previsto. Supponendo che tu abbia un codice HTML corretto.
A titolo di esempio, costruire il corpo come segue:
NSMutableString *body = [NSMutableString string];
// add HTML before the link here with line breaks (\n)
[body appendString:@"<h1>Hello User!</h1>\n"];
[body appendString:@"<a href=\"http://www.mysite.com/path/to/link\">Click Me!</a>\n"];
[body appendString:@"<div>Thanks much!</div>\n"];
Cheers!
Eccellente! bello sapere le interruzioni di riga !, salvami un po 'di tempo l'uomo esulta – MaKo
Ho lo stesso problema.
Il mio link è HTML, posso vedere 'blu' ma se clicco, non apre safari mobile. Mi è permesso di modificare il testo.
In una classe ho questo:
-(id) init{
self = [super init];
if (self) {
if ([MFMailComposeViewController canSendMail]) {
self.mailComposeDelegate = self;
[self setSubject: @"Subject"];
[self setMessageBody: @"<h2>Body</h2><a href='http://www.google.com'>link example</a>" isHTML: YES];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Mail Accounts"
message:@"You don't have a Mail account configured, please configure to send email."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}
}
return self;
}
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
[controller dismissModalViewControllerAnimated: YES];
}
Qui potete vedere la schermata iPad:
Se invio, e poi andare a "Sent" mailbox le opere di collegamento, quindi penso che il problema sia l'evento che apre i link.
Grazie.
Hai fatto clic sull'e-mail ricevuta o in modalità di modifica? – AsifHabib