如何使用Objective-C/Cocoa编程发送电子邮件

3

您好,我是初次接触MAC OS开发的程序员。我想通过应用程序以编程方式发送电子邮件,但不想像在Apple网站上的SBSendEmail中那样使用Mail应用程序。我不想附加任何附件,只需要一个纯文本电子邮件。最佳和最简单的方法是什么?是否可以使用SBSendEmail的基本功能并自动化发送邮件的最后一步骤?是否没有像在C#中创建邮件对象并直接发送它那样简单的方法? 谢谢。


2
只是猜测,但这可能会有所帮助:http://stackoverflow.com/search?q=cocoa+send+email - Dave DeLong
2个回答

2

在纯Cocoa中没有办法做到这一点,除非使用其中三个或四个可用的电子邮件库之一(Pantomime是我知道的一个)。所有这些库的主要问题是它们都是为实现完整的电子邮件客户端而设计的,而不仅仅是发送电子邮件,因此它们可能比你需要的更加庞大。

对于Growl的MailMe显示,我编写了一个Python命令行邮件发送工具。Xcode项目将其捆绑到MailMe显示插件包中,并使用NSTask运行该工具,传递用户在邮件首选项中找到的SMTP信息。Growl也是开源的,所以您可以阅读MailMe显示的源代码

无法使用的内容:

  • Message框架,在64位中没有公共API。
  • mail(1)工具,需要用户运行本地SMTP服务器(simple-mailer使用另一个SMTP服务器,您在命令行中传递其名称)。
请注意,MailMe目前不知道如何查找MobileMe密码,因此它还不能使用MobileMe帐户进行发送。如果您修改了代码以实现这一点,我们将非常感激一个补丁!
另一个补丁机会是,MailMe目前仅在邮件首选项中查找邮件发送设置。它可以查找其他客户端的首选项,但目前还不知道如何做到这一点。如果任何使用Thunderbird的人想要这种功能,同样,我们将非常感激一个补丁。

SMTP是一个非常简单的协议,如果您知道SMTP服务器,直接使用套接字与其通信可能会更容易。我曾经做过这个练习,惊讶于发送电子邮件是多么简单。 - dreamlax
你能否详细解释一下这个问题? - Aniket

0
我建议您使用 /usr/lib/sendmail(如果存在)。打开一个管道到 /usr/lib/sendmail 并将邮件发送到 stdin。这应该在操作系统中可用。

sendmail将尝试通过本地SMTP服务器发送邮件。在任何Mac OS X客户端机器上,本地SMTP服务器没有运行,因此邮件实际上不会被发送。另外,它是/usr/sbin/sendmail;/usr/lib用于库文件。 - Peter Hosey
/usr/lib/sendmail是sendmail的事实标准位置,尽管它可能看起来不太常规。将邮件交给本地MTA而不是尝试在那时进行SMTP传递要可靠得多。系统管理员应配置sendmail或ssmtp或类似的东西来执行传递,它不必是一个完整的邮件程序,只需要能够排队即可。 - eneville

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接