Подтвердить что ты не робот

MFMailComposeViewController: как вставлять ссылку для URL-адреса с кликом в тело сообщения электронной почты

Я хочу, чтобы мое приложение использовало MFMailComposeViewController для отправки электронной почты, чтобы получатель мог щелкнуть встроенный url, чтобы открыть соответствующий веб-сайт. MFMailComposeViewController, похоже, явно не поддерживает это. Любые идеи?

4b9b3361

Ответ 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: iPad Screen shot

Если я отправлю, а затем я перейду в "Отправленный" почтовый ящик, ссылка будет работать, поэтому я думаю, что проблема - это событие, открывающее ссылки.

Спасибо.

Ответ 4

Используйте setMessageBody:isHTML: и передайте правильную ссылку HTML в теле (<a href="your_url">your link text</a>) и передайте YES в параметр isHTML.

Ответ 5

попробовал ли вы свой код свое предложение? Я попробовал это, прежде чем попасть на этот веб-сайт, и, к сожалению, это вообще не работает. Ссылка выглядит действительно синим цветом, HTML читается как html, но ссылка не возможна. Когда я нажимаю на ссылку, я могу просто ее отредактировать....

Любое лучшее предложение?