ios - API 响应访问“发件人”和“收件人”邮件的名称

标签 ios swift string swift4 gmail-api

我能够从 gmail api 获取消息。在回复中,我收到的发件人和收件人邮件如下所示

enter image description here .

{
    "name": "From",
    "value": Mail Delivery Subsystem **Symbol lessthan**mailer-daemon@googlemail.com**Symbol greaterthan**
}

{
    "name": "To",
    "value": Rahul, kumar **Symbol greaterthan**rahulkumar1234@gmail.com**Symbol lessthan**
}

我可以通过循环访问如下所示的值。

 if element.name == "From" {
   print("From ::: \(String(describing: element.value!))")
 }

输出是:

From ::: Mail Delivery Subsystem <mailer-daemon@googlemail.com>

而不是发件人姓名和邮件。我只想单独获取邮件和发件人姓名。我如何将值分为两个部分/字符串,一个用于名称,另一个用于邮件。

有时没有发件人姓名以及小于和大于符号,此时我只收到邮件。

@vadian 我在下面指定了响应中的所有格式。有时我没有得到小于和大于。我还想将姓名和电子邮件保存为两个单独的字符串。如果响应中没有名称,则无需将其作为字符串进行抓取,只有邮件足以将其作为字符串进行抓取。 enter image description here

最佳答案

首先\(String(describing: element.value!)太可怕了。 element.value!无论如何应该是一个字符串并包装在 String(describing: 中再次在字符串插值中是两次冗余。

请勿滥用String(describing对于符合 ExpressibleByStringLiteral 的类型无论如何。

只需写print("From ::: ", element.value!)

<小时/>

此函数返回 name 的元组和email 。它检查是否有 <性格。

如果没有,则返回空字符串 name输入字符串为 email .
如果有,则返回 < 之后的子字符串直到倒数第二个字符 email其余的由 double quote 修剪, space<name

func extractNameAndMail(in string: String) -> (name:String, email:String) {
    if let rangeOfLessThan = string.range(of: "<") {
        let email = string[rangeOfLessThan.upperBound...].dropLast()
        let name = string[...rangeOfLessThan.lowerBound].trimmingCharacters(in: CharacterSet(charactersIn: "\" <"))
        return (name: String(name), email: String(email))
    } else {
        return (name:"", email:string)
    }
}

let string = "\"Some Guy\" <mailer-daemon@googlemail.com>"
let extractedString = extractNameAndMail(in: string)

关于ios - API 响应访问“发件人”和“收件人”邮件的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50212605/

相关文章:

ios - 从 MKMapView 中找出你所在的区域类型

ios - NSURLConnection中建立错误案例,Swift中JSON解析

ios - 在 tableView 中打开特定的 viewController

ios - 使用选项卡 View Controller 的演练

c++ - 如何覆盖 printf 输出的先前字符串

regex - 如何判断正则表达式中的匹配项之间是否存在三个或更多字符?

ios - 在pubspec.yaml中添加Google Maps软件包后,Flutter的iOS应用将无法构建

ios - 如何在 iOS 中检测外接麦克风?

java - Java中如何将一个字符串替换为另一个字符串并将其插入到下一行代码中

ios - 如何使用 ObjectMapper 映射此 JSON?