MFMailComposeViewController : how do I embed a cli

2020-02-04 05:52发布

I want my app using the MFMailComposeViewController to send an email such that the recipient can click on the embedded url to open the corresponding web site. MFMailComposeViewController does not appear to support this explicitly. Any ideas?

5条回答
太酷不给撩
2楼-- · 2020-02-04 06:30

:) Yes, you can do this:

MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
composer.mailComposeDelegate = self;
[composer setSubject:subject];
[composer setMessageBody:message isHTML:YES];                    

where message is just an NSString with HTML content. Inside you can add all the HTML you want.

查看更多
Ridiculous、
3楼-- · 2020-02-04 06:31

Use setMessageBody:isHTML: and pass a proper HTML link in the body (<a href="your_url">your link text</a>) and pass YES to the isHTML parameter.

查看更多
Lonely孤独者°
4楼-- · 2020-02-04 06:41

I deleted my previous answer as it was incorrect and irrelevant. After much hair pulling I finally figured out what was going on in my case and is probably what is happening in this question.

When you compose the HTML body for the MFMailComposeViewController you must put line breaks in the HTML. If any line is > 76 chars long, the body will be interpreted as follows:

Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

If you put line breaks in, the Content-Transfer-Encoding: quoted-printable will not happen and everything works as expected. Assuming you have proper HTML.

As an example, build the body as follows:

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!

查看更多
beautiful°
5楼-- · 2020-02-04 06:41

did you try on your code your suggestion? I tried it before getting to this web site, and sorry to say, it doesn't work at all. The Link appears really in blue, the HTML is read as html, but no link is possible. When I click on the link I can just edit it....

Any better suggestion?

查看更多
淡お忘
6楼-- · 2020-02-04 06:47

I have the same problem.

My link is HTML, I can see 'blue' but if I click it, doesn't open safari mobile. Is allowed to me edit the text.

In a class I have this:

-(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];
}

Here you can see the iPad Screen shot: iPad Screen shot

If I send, and then I go to "Sent" Mailbox the link works, so I think the problem is the event which open the links.

Thanks.

查看更多
登录 后发表回答