【问题标题】:Setting an email header on objective-C?在 Objective-C 上设置电子邮件标题?
【发布时间】:2014-11-19 18:30:40
【问题描述】:

我正在尝试制作一个使用 MFMailComposeViewController 发送电子邮件的应用,但该类似乎没有提供设置电子邮件标题的方法。

我试图寻找执行此操作的较低级别的解决方案(甚至是库),但找不到。如何在 Objective-C 应用程序中设置/获取电子邮件标头?

[编辑] 明确地说,我正在寻找一种通过 MFMailComposeViewController 提供之外的方式设置电子邮件标题的方法。我已经知道如何发送一封简单的电子邮件。我正在寻找一种方法来设置电子邮件标题,例如 In-Reply-To 或 Message-ID

【问题讨论】:

  • 标题表示你想设置主题?
  • 这里有你需要的所有方法: setSubject(:) setToRecipients(:) setCcRecipients(:) setBccRecipients(:) setMessageBody(:isHTML:) addAttachmentData(:mimeType:fileName:
  • 不,我所说的标题实际上是指完整的电子邮件标题en.wikipedia.org/wiki/Email#Header_fields 更具体地说,我试图访问诸如 Message-ID 或 In-Reply-To 之类的标题。
  • 我已经知道如何使用上面提到的所有方法发送简单的电子邮件。
  • @Vlad 你找不到任何与内置 iOS 邮件集成的东西,允许设置额外的标头(mailto: 支持 MFMailComposeViewController 支持的有限集)。

标签: ios objective-c ios7 mfmailcomposeviewcontroller email-headers


【解决方案1】:

如果您使用 libcurl(c 库)或其可可包装器之一,我认为您将拥有足够的资源,不是吗?

Check here for BBHTTP and CURLHandle

这应该让您可以使用 cocoa/objc 语法手动组合您的 smtp 流量。这是否更符合您的要求?

【讨论】:

  • 我更多的是寻找一种使用 Mail.app 发送电子邮件的方法,而用户不必经历使用低级协议的所有复杂性。我认为,由于允许使用其他更基本的标头,例如标题等,因此应该有一种方法可以使用高级 API 以某种方式附加标头,例如 In-Reply-To。
  • 我打算建议您预先撰写一封电子邮件并使用 open -a mail.app myEmail 打开它,但后来我记得您正在尝试为 iOS 执行此操作。我认为,除了利用私有方法之外,您最好的方法是:a)调出一个稍后执行的非私有方法,让您可以对模型进行一些访问(不太可能),b)滚动您的自己的邮件撰写视图控制器,由整个 qa 中提到的几个库之一支持。 Apple 根本没有公开您要查找的内容。 ://
【解决方案2】:

如果您想创建电子邮件标头,您可以使用 html 创建自己的标头,并将其设置为邮件的邮件正文,其中 isHTML 为 True。

我刚刚尝试了以下代码:

NSString * Htmlstr =[NSString stringWithFormat:@ "<html>"
                   "<body>"
                   "<div id=\"container\" style=\"background-color:#EEEEEE;height:300px;width:500px;float:left;\">"
                   "<div id=\"header\" style=\"background-color:#FFA500;\">"
                   "<h3 style=\"margin-top:0;\">ABC</h3></div>"
                   "<div id=\"content\" style=\"background-color:#EEEEEE;height:300px;width:500px;float:left;\">%@</div>"
                   "<div id=\"Banner\" style=\"background-color:#EEEEEE;clear:both;text-align:left;margin-top:0;\"><img src=\"%@\" alt=\"Smiley face\" width=\"500\" height=\"100\"></div>"

                   "<div id=\"footer\" style=\"background-color:#FFA500;clear:both;text-align:center;margin-bottom:0;\">Copyright © abc.com</div>"
                   "</div>"
                   "</body>"
                   "</html>",emailBody,self.SelectedBannerImage];

[mailer setMessageBody:Htmlstr isHTML:YES];

希望对你有所帮助..

【讨论】:

【解决方案3】:

Sparrow 的作者编写了一个很棒的类,称为 MailCore(现在是第 2 版),它允许您这样做。

如果您将在此处访问课程类文档:http://libmailcore.com/mailcore2/api/Classes/MCOMessageHeader.html

您可以在messageIDinReplyTo 等属性中找到各种有用的标题。

【讨论】:

  • 谢谢,但是如果您阅读了上面的要求,我特别声明我不是在寻找像 MailCore 这样的解决方案。
猜你喜欢
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多