首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当HTML作为JSON请求的参数发送时,具有多个CSS类的HTML不会呈现

当HTML作为JSON请求的参数发送时,具有多个CSS类的HTML不会呈现
EN

Stack Overflow用户
提问于 2018-11-22 04:14:23
回答 1查看 79关注 0票数 1

我有一个API,它接受一个JSON作为请求参数。此JSON中的一个字段是HTML字符串。HTML string从.css文件中选择它的css。但是,对于具有两个css类的HTML元素,没有一个css类被选取。

下面是我创建字典的方法:

代码语言:javascript
复制
private func createCalendarInviteDictionary() -> [String: Any] {

    var calendarInviteDict = [:] as [String: Any]
    calendarInviteDict["emailId"] = hostDict["HostEmailAddress"]
    calendarInviteDict["startTime"] = mgVisitorInfo.startDate
    calendarInviteDict["endTime"] = mgVisitorInfo.endDate
    calendarInviteDict["location"] = mgVisitorInfo.locationSite
    calendarInviteDict["subject"] = "Welcome!!"
    calendarInviteDict["allDayEvent"] = "no"
    calendarInviteDict["isSkypeMeeting"] = "no"
    calendarInviteDict["isHigh"] = "yes"
    calendarInviteDict["requiredAttendees"] = [mgVisitorInfo.email]
    calendarInviteDict["optionalAttendees"] = []
    return calendarInviteDict
}

下面是不完整的方法,我调用上面的方法并将字典转换为JSON:

代码语言:javascript
复制
private func createCalendarInvite(_ completion: @escaping dataRequestCompletionBlock) {

    var calendarInviteDict = createCalendarInviteDictionary() as [String: Any]
    let emailContentHelper = EmailContentHelper()
    calendarInviteDict["body"] = emailContentHelper.constructEmailBody()

    var calendarInviteJSON = ""
    if let theJSONData = try? JSONSerialization.data(
        withJSONObject: calendarInviteDict,
        options: [.prettyPrinted]) {
        calendarInviteJSON = String(data: theJSONData, encoding: .utf8)!
        print("JSON string = \(calendarInviteJSON)")
    }
    let calendarInviteParams = ["requestJSONString": calendarInviteJSON] as [String: String]
// do something else
}

以下是控制台中为JSON字符串记录的内容:

代码语言:javascript
复制
JSON string = {
  "optionalAttendees" : [

  ],
  "requiredAttendees" : [
"abc@gmail.com"
  ],
  "location" : "location",
  "emailId" : "xyz@gmail.com",
  "isSkypeMeeting" : "no",
  "body" : "<html><head><style type=\"text\/css\" media=\"all\">#banner {\n\twidth: 100%\n}\n\n* {\n    box-sizing: border-box;\n}\n\n.blue {\n    color: #007DB8;\n    font-family: 'Roboto';\n    font-weight: bold;\n    font-size: 14pt;\n}\n\n.blackBold {\n    font-family: 'Roboto';\n    font-weight: bold;\n    font-size: 14pt;\n}\n\n.blackLight {\n    font-family: 'Roboto';\n    font-weight: light;\n    font-size: 14pt;\n}\n\n.table-column1 {\n    vertical-align: top;\n    padding-left: 0pt\n}\n\n.table-column2 {\n    padding-left: 20pt;\n}\n\n.centerText {\n    text-align: center;\n}\n\nimg {\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n}\n<\/style><\/head><body><p><img class=\"banner\" src=\"https:\/\/i.abc.com\/sites\/csimages\/Banner_Imagery\/all\/invite_web.png\" alt=\"Invite-Image-With-Logo\" border=\"0\"><\/p><p><span class=\"blackBold\">Dear<\/span><span class=\"blue\"> letsbondiway<\/span><\/p><p><span class=\"blackLight\">We are very much looking forward to your visit to the <\/span><span class=\"blackBold\">location<\/span><span class=\"blackLight\"> Campus.<\/span><\/p><br><span class=\"blue\">Your visit details:<\/span><br><table><tr><td class=\"blue table-column1\">Company:<\/td><td class=\"blackLight table-column2\">company<\/td><\/tr><tr><td class=\"blue table-column1\">Arrival Date:<\/td><td class=\"blackLight table-column2\">Thu, Nov 22, 2018 1:30 AM<\/td><\/tr><tr><td class=\"blue table-column1\">Departure Date:<\/td><td class=\"blackLight table-column2\">Thu, Nov 22, 2018 2:30 AM<\/td><\/tr><tr><td class=\"blue table-column1\">Visiting:<\/td><td class=\"blackLight table-column2\">letsbondiway<\/td><\/tr><\/table><br><\/body><\/html>",
  "isHigh" : "yes",
  "endTime" : "2018-11-22 2:30:23.000",
  "startTime" : "2018-11-22 1:30:23.000",
  "allDayEvent" : "no",
  "subject" : "Welcome!!"
}

可以看到,上面登录的JSON中的html有两种风格的元素-一种只有一个css类

代码语言:javascript
复制
<span class=\"blackBold\">Dear<\/span>

和其他具有2个css类的-

代码语言:javascript
复制
<td class=\"blue table-column1\">Company:<\/td>

当此JSON在API请求中发送且API成功执行时,具有一个css类的HTML部分将正确呈现,但具有两个css类的HTML部分将不会正确呈现。事实上,它不接受这两个类中任何一个类的属性。

我显然可以使用内联样式,这应该也可以,但由于我需要在HTML中的多个位置使用相同的属性,所以我创建了一个包含css类的.css文件。

我需要做什么更改才能正确呈现具有2个css类的HTML部分。

EN

回答 1

Stack Overflow用户

发布于 2018-11-22 04:29:22

链接电子邮件中的类不是一个好主意,因为许多电子邮件客户端不会识别它。

请记住,电子邮件的css是非常有限的。因此,不需要向每个单元格添加多个类,只需添加一个类。或者更好的是,内联样式。我知道内联样式非常混乱,但当涉及到电子邮件时,嵌套表和内联样式是你最好的朋友。让它尽可能的简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53419826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档