swift - 从联系人详细信息中获取电子邮件地址

标签 swift mfmailcomposeviewcontroller mfmailcomposer

我正在尝试使用 swift 从联系人详细信息中打开 MailComposeViewController。一切正常,当我单击联系人的电子邮件时,页面打开,但我想用我刚刚单击的电子邮件填充收件人电子邮件字段,但我不知道该怎么做。

这是我的代码:

 func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) {

    if MFMailComposeViewController.canSendMail() {

        let mail = MFMailComposeViewController()

        mail.mailComposeDelegate = self

        //This doesn't work, only asks for a string. 
        mail.setToRecipients(["\(contactProperty.value)"])


        self.dismissViewControllerAnimated(true, completion: {() -> Void in
            self.presentViewController(mail, animated: true, completion: nil)
        })

    } else {
        print("send error")
    }
}

我只能向 mail.setToRecipients 添加字符串。当我使用 contactProperty.value 时,它​​给我这个错误:

可选(example@email.com)不是有效的电子邮件地址。

最佳答案

CNContactProperty.valueAnyObject? 类型,这意味着它是可选的。
因此,您需要安全地解包并将其转换为字符串。

尝试替换这个

mail.setToRecipients(["\(contactProperty.value)"])

if let emailAddress = contactProperty.value as? String {
        mail.setToRecipients([emailAddress])
    }

关于swift - 从联系人详细信息中获取电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39108381/

相关文章:

iphone - MFMailComposer -- 使用 HTML ON 附加图像

ios - PDF 和 MFMailComposeViewController

ios - 使用 Apple Mail 应用程序以外的外部应用程序发送电子邮件

iOS - 在不知道其大小的情况下添加 View

ios - 如何根据iPhone屏幕尺寸添加不同的约束?

ios - 无限显示本地通知

csv - MFMailComposeViewController csv 附件没有被附加,而是显示内联

ios - 在 iOS 应用程序中无需用户交互即可发送电子邮件

ios - UIImage 到 PHAsset