我有一个TableView,它选择和取消选择客户端,以便建立一个电子邮件地址数组,然后可以发送组邮件。
然后,我希望用户能够通过按钮打开Apple的默认邮件应用程序,并在前面构建的列表中找到已发送给成员的消息。
我可以通过以下方式使用一个地址:
let email = client.value
if let url = URL(string: "mailto:\(email)") {
UIApplication.shared.open(url)
}
我还建立了一串逗号分隔的电子邮件,如果用户只想要这个列表就可以复制到剪贴板,在手机上使用不同的电子邮件应用程序或其他任何内容,只需给他们更多选项。
for client in clientsToEmail {
emails.append(client.value)
}
emailsCommaSeperated = emails.joined(separator: ", ")
这样可以正常工作,但是,我不能将这个以逗号分隔的列表分配给“mailto :()”,好像这个方法会检查有效的电子邮件xxx@xxx.xx。以逗号分隔的电子邮件列表显然不是。
还有其他方法可以做到这一点,任何人都知道吗?某种方式打开邮件应用程序,从另一个应用程序,发送电子邮件地址列表,并创建一个发送到所有这些地址的新电子邮件?
任何帮助非常感谢!
答案 0 :(得分:1)
你必须对这些逗号进行编码。
let recipients = ["percent@encode.net","those@commas.com","andbe@well.org"]
UIApplication.shared.open(URL(string: "mailto:\(recipients.joined(separator: "%2C"))")!)
的逗号的百分比编码
答案 1 :(得分:0)
您可以按照here和here中的说明尝试这样mailto:foo@example.com?cc=bar@example.com&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!
,但我不认为您可以通过一次点击使用mailTo()向多个用户发送邮件。尝试添加cc
答案 2 :(得分:0)
我从多种来源在线阅读,除非您将其他电子邮件添加为抄送,否则您无法向mailto发送一封以上的电子邮件。因此mailto格式应如下所示:
“ mailto:email1@email1.com?cc = email2 @ email.com,email3 @ email.com”
回到您的示例,首先应删除逗号分隔符中的所有空格,并且应分别存储第一封电子邮件,然后再以我上面提到的格式将两者合并。
因此,在您的情况下,代码应如下所示:
var firstEmail = ""
var emails: [String] = []
for client in clientsToEmail {
if firstEmail == "" {
firstEmail = client.value
} else {
emails.append(client.value)
}
}
let ccEmails = emails.joined(separator: ",")
let fomattedRecipents = firstEmail + "?cc=" + ccEmails
let url = URL(string: "mailto:\(fomattedRecipents)")!
if #available(iOS 10, *) {
UIApplication.shared.open(url)
} else {
UIApplication.shared.openURL(url)
}
答案 3 :(得分:0)
我今天刚刚在 iOS 14 上尝试过这个(不确定它是否适用于以前的版本),您可以简单地使用不带空格的逗号分隔电子邮件地址。
Swift 代码:
let mailToRecipients = ["bob@google.org", "test@example.com"].joined(separator: ",")
guard let mailtoUrl = URL(string: "mailto:\(mailToRecipients)") else { return }
UIApplication.shared.open(mailtoUrl)