Я хочу, чтобы мое приложение использовало MFMailComposeViewController
для отправки электронной почты, чтобы получатель мог щелкнуть встроенный url
, чтобы открыть соответствующий веб-сайт.
MFMailComposeViewController
, похоже, явно не поддерживает это. Любые идеи?
MFMailComposeViewController: как вставлять ссылку для URL-адреса с кликом в тело сообщения электронной почты
Ответ 1
:) Да, вы можете сделать это:
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
composer.mailComposeDelegate = self;
[composer setSubject:subject];
[composer setMessageBody:message isHTML:YES];
где сообщение представляет собой только NSString с содержимым HTML. Внутри вы можете добавить весь HTML-код.
Ответ 2
Я удалил свой предыдущий ответ, поскольку он был неправильным и неактуальным. После долгих причесок я наконец понял, что происходит в моем случае, и, вероятно, это то, что происходит в этом вопросе.
Когда вы создаете тело HTML для MFMailComposeViewController, вы должны поместить разрывы строк в HTML. Если какая-либо строка длиннее > 76 символов, тело будет интерпретироваться следующим образом:
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Если вы введете разрывы строк, Content-Transfer-Encoding: quoted-printable
не произойдет, и все будет работать так, как ожидалось. Предполагая, что у вас правильный HTML.
В качестве примера построим тело следующим образом:
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"];
Ура!
Ответ 3
У меня та же проблема.
Моя ссылка - это HTML, я могу видеть "синий", но если я нажму на нее, не открою сафари-мобильник. Разрешено мне редактировать текст.
В классе у меня есть это:
-(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];
}
Здесь вы можете увидеть снимок iPad:
Если я отправлю, а затем я перейду в "Отправленный" почтовый ящик, ссылка будет работать, поэтому я думаю, что проблема - это событие, открывающее ссылки.
Спасибо.
Ответ 4
Используйте setMessageBody:isHTML:
и передайте правильную ссылку HTML в теле (<a href="your_url">your link text</a>
) и передайте YES
в параметр isHTML
.
Ответ 5
попробовал ли вы свой код свое предложение? Я попробовал это, прежде чем попасть на этот веб-сайт, и, к сожалению, это вообще не работает. Ссылка выглядит действительно синим цветом, HTML читается как html, но ссылка не возможна. Когда я нажимаю на ссылку, я могу просто ее отредактировать....
Любое лучшее предложение?