iOS应用通过SMTP发邮件时隐藏Firebase存储PDF链接的实现咨询
实现方案
该需求可以正常实现,仅需将原纯文本格式的邮件内容调整为HTML格式,即可为PDF链接绑定自定义的显示文本,隐藏原始URL。
具体修改步骤
- 调整邮件部分的内容类型,将
text/plain替换为text/html - 遍历存储PDF链接的数组,将每一条URL转换为
<a>标签格式,自定义设置标签显示文本 - 组装HTML格式的邮件内容后替换原有纯文本内容即可
修改后参考代码
func sendEmail() { let message = SKPSMTPMessage() message.relayHost = "smtp.gmail.com" message.login = "****@gmail.com" message.pass = "*****" message.requiresAuth = true message.wantsSecure = true message.relayPorts = [587] message.fromEmail = "****@gmail.com" message.toEmail = "****@gmail.com" message.subject = "subject" // 转换URL为带自定义名称的HTML超链接 var linkHtmlStr = "" for (index, urlStr) in getmailpdf.enumerated() { // 可根据业务需求替换为任意自定义显示名,比如PDF的实际文件名 let docName = "Document\(index + 1)" linkHtmlStr += "<p><a href=\"\(urlStr)\">\(docName)</a></p>" } // 组装完整HTML邮件内容 let emailHtml = """ <p>Hi,</p> <p>请查看下方申请的文档:</p> \(linkHtmlStr) """ let messagePart = [ kSKPSMTPPartContentTypeKey: "text/html; charset=UTF-8", kSKPSMTPPartMessageKey: emailHtml ] message.parts = [messagePart] message.delegate = self message.send() }
效果示例

补充说明
如果需要兼容不支持HTML渲染的极端邮件客户端场景,可以同时添加纯文本、HTML两个邮件part,客户端会自动适配可渲染的版本进行展示。
内容的提问来源于stack exchange,提问作者aig_88
相关产品推荐
相关产品推荐

