MFMailComposeViewController:如何将可点击的URL链接嵌入电子邮件正文中

时间:2010-01-13 16:39:04

标签: iphone objective-c cocoa-touch mfmailcomposeviewcontroller

我希望我的应用使用MFMailComposeViewController发送电子邮件,以便收件人可以点击嵌入式url以打开相应的网站。 MFMailComposeViewController似乎没有明确支持此内容。有什么想法吗?

5 个答案:

答案 0 :(得分:26)

我删除了之前的答案,因为它不正确且无关紧要。经过多次拔毛后,我终于想出了我的案例中发生了什么,可能就是这个问题中发生了什么。

当您为MFMailComposeViewController编写HTML正文时,必须在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"];

干杯!

答案 1 :(得分:16)

:)是的,你可以这样做:

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

其中message只是一个包含HTML内容的NSString。在里面你可以添加你想要的所有HTML。

答案 2 :(得分:7)

我有同样的问题。

我的链接是HTML,我可以看到'蓝色'但是如果我点击它,就不会打开safari mobile。允许我编辑文本。

在课堂上我有这个:

-(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

如果我发送,然后我转到“已发送”邮箱链接有效,所以我认为问题是打开链接的事件。

感谢。

答案 3 :(得分:4)

使用setMessageBody:isHTML:并在正文中传递正确的HTML链接(<a href="your_url">your link text</a>),并将YES传递给isHTML参数。

答案 4 :(得分:4)

你是否尝试过你的建议代码?我在访问这个网站之前尝试过,很遗憾地说,它根本不起作用。链接显示为蓝色,HTML显示为html,但无法链接。当我点击链接时,我可以编辑它....

有什么更好的建议吗?