3

我需要发送包含来自应用程序的图像的 HTML 报告。报告被布置并且图像被嵌入到报告中。当我在网络视图中预览报告时,它看起来是正确的,当我通过 GMail 收到它时,样式和图像丢失了。

标题中嵌入了一个 CSS 样式表。

我正在发送这样的报告:

NSString* htmlReportString = [ReportManager createReportWithEvent:event];
[mailController addAttachmentData:[htmlReportString dataUsingEncoding:NSUTF8StringEncoding] mimeType:@"text/html" fileName:@"report.html"];
[mailController setMessageBody:htmlReportString isHTML:YES];

这是我从 .plist 中得到的并作为报告标题附加的内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>template1</key>
    <string>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;title&gt;Report&lt;/title&gt;
&lt;style type=&quot;text/css&quot;&gt;
.statHead {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 30px;
    font-weight: bold;
    color: #FFF;
}
.statSub {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    font-weight: normal;
    color: #FFF;
}
.repHead {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    color: #000;
}
.repSub {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    font-weight: normal;
    color: #000;
}
.repLinks {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    color: #000;
}
.repSubBullet {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    font-weight: normal;
    color: #000;
    list-style-type: circle;
}
.repSubBold {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    font-weight: bold;
    color: #000;
}
.topName {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 34px;
    font-weight: bold;
    color: #000;
}
.topDate {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 24px;
    font-weight: bold;
    color: #000;
}
.topSub {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    font-weight: normal;
    color: #000;
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;</string>
</dict>
</plist>

当我在 iPhone 的网络视图中预览报告时,它看起来是正确的——所有样式都存在,图像也存在。但是当我在 GMail 中收到报告时,图像丢失并且没有任何样式显示。如果我保存报告并在我的 Mac 的预览应用程序上查看它,报告将再次正确显示。

是什么导致了这个问题?是编码/反斜杠问题还是 Gmail 对待 HTML 的方式与 Apple 的网络浏览器不同?

4

2 回答 2

2

您已经在您的 HTMl 代码中转义了 HTML特殊字符&lt;等,应该将其替换为它们的官方 HTML 等价物,否则您的 HTML 将无法工作。它在 iOS 浏览器中运行对我来说听起来有点奇怪。

当然,这也可能是另一个问题......

于 2012-07-03T13:17:09.270 回答
0

将您的 CSS 与 HTML 页面合并,并生成完整的数据字符串。然后添加以下代码。

MFMailComposeViewController *picker=[[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate=self;
    [picker setSubject:@"Your Title"];
    [picker setMessageBody:HTMLSTRING isHTML:YES];
    [self presentModalViewController:picker animated:YES];
    [picker release];

在您的邮件编辑器中查看此内容。是否正确显示?

于 2012-07-03T13:21:07.113 回答