Как экранировать символы в href = mailto (iPhone) - PullRequest
0 голосов
/ 08 марта 2009

Я хочу создать ссылку на UIWebView, которая отправляет контент пользователю по электронной почте Простой пример:

<a href="mailto:zippy@example.com?subject=Sarcasm&body=I »
<b>love</b> &lt;html&gt; mail!">Hi!</a>

, который создает сообщение, которое выглядит так:

- начать сообщение ---

To: zippy@example.com Тема: Сарказм

Я люблю почту!

- конечное сообщение -

Мне нужно что-то более сложное. Тема будет содержать несколько слов с пробелами. Тело будет содержать HTML, список (


Конец. "

Кроме того, почему симулятор что-то делает при нажатии на ссылку mailto?

Ответы [ 3 ]

3 голосов
/ 09 марта 2009

Поля имеют URL-кодировку (для этого вы можете использовать stringByAddingPercentEscapesUsingEncoding:).

4-е пространство упомянуло, что Mail.app делает разрешением HTML . Это против mailto RFC2368 , в котором четко сказано, что body должно быть text/plain.

2 голосов
/ 08 марта 2009

У симулятора нет Mail.app, как вы можете видеть на главном экране, поэтому ему нечего открывать, когда он сталкивается с ссылкой на mailto.

Насколько я знаю, нет никакого способа использовать mailto: для отправки электронной почты в формате HTML.

1 голос
/ 26 января 2010

Вам понадобится ссылка MessageUI.framework на ваш проект.

Добавьте следующее в ваш .h файл

#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

Добавить делегата <MFMailComposeViewControllerDelegate>

Создайте пару методов, похожих на следующие, в вашем файле .m.

-(IBAction)checkCanSendMail:(id)sender{
        Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
        if (mailClass != nil) {
            if ([mailClass canSendMail]) {
                [self displayComposerSheet];
            }
            else {
                //Display alert for not compatible. Need iPhone OS 3.0 or greater. Or implement alternative method of sending email.
            }
        }
        else {
            //Display alert for not compatible. Need iPhone OS 3.0 or greater.  Or implement alternative method of sending email.
        }
    }

    -(void)displayComposerSheet {
        MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
        mailer.mailComposeDelegate = self;

        [mailer setSubject:@"Email Subject"];

        //Set our to address, cc and bcc
        NSArray *toRecipients = [NSArray arrayWithObject:@"primary@domain.com"];
        //NSArray *ccRecipients = [NSArray arrayWithObjects:@"first@domain.com",@"second@domain.com",nil];
        //NSArray *bccRecipients = [NSArray arrayWithObjects:@"first@domain.com",@"second@domain.com",nil];

        [mailer setToRecipients:toRecipients];
        //[mailer setCcRecipients:ccRecipients];
        //[mailer setBccRecipients:bccRecipients];

        NSString *emailBody = @"\
        <html><head>\
        </head><body>\
        This is some HTML text\
        </body></html>";

        [mailer setMessageBody:emailBody isHTML:YES];

        [self presentModalViewController:mailer animated:YES];
        [mailer release];
        }

Пример кода Apple с дополнительными инструкциями доступен по адресу: http://developer.apple.com/iphone/library/samplecode/MailComposer/

Я знаю, что это не использует webView, но позволяет создавать HTML-письма из вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...