问题通过 SMTP 发送邮件
Posted
技术标签:
【中文标题】问题通过 SMTP 发送邮件【英文标题】:Issue Sending Mail via SMTP 【发布时间】:2014-07-13 02:58:12 【问题描述】:我的 ios 应用程序使用 Mailcore 访问用户的电子邮件帐户。发送和接收是通过 SMTP 和 IMAP 完成的,这两个过程都按预期工作于 Gmail 和 Outlook(两者都使用 OAuth 登录)。
我刚刚添加了雅虎(以及其他一些不使用 OAuth 的应用程序提供商),对于所有这些提供商,我在发送消息方面遇到了问题。
问题是,虽然消息确实从我的应用程序成功发送,但它们并未出现在提供者的 web 上已发送文件夹中。
例如,如果我在我的应用程序中登录我的 Yahoo 帐户,并向我的 Gmail 帐户发送一条消息,则该消息会出现在我的网络上的 Gmail 收件箱中,但不会出现在我的网络上的雅虎发件箱中。
我尝试将 Yahoo 添加到 iPhone 上的常规邮件应用程序并从该帐户发送消息 - 这很好 - 消息显示 Yahoo 在网络上的发送框。因此,我随后比较了两条消息的标题(一条从邮件应用程序发送,一条从我的应用程序发送),我看到的唯一明显区别是“X-Rocket-Received”行:
邮件应用:
X-Rocket-Received: from [11.180.250.219] (userName@71.208.72.234 with xymcookie [216.39.61.254])
by smtp203.mail.ne1.yahoo.com with SMTP; 23 May 2014 08:19:54 -0700 PDT
我的应用:
X-Rocket-Received: from (userName@118.41.27.139 with plain [98.138.105.21])
by smtp214.mail.ne1.yahoo.com with SMTP; 23 May 2014 08:58:29 -0700 PDT
谁能帮我回答以下任何问题:
1) X-Rocket-Received 是什么意思?
2) “with xymcookie”与“with plain”的意义何在?
3) 我的问题可能与我没有 xymcookie 有关吗?
4) 我可以从哪里着手解决这个问题?
非常感谢。
【问题讨论】:
【参考方案1】:附加信息:
-
它被一些服务器沿途放置在那里。它是一个非标准的标题。不过,它看起来类似于标准的 SMTP Received 标头。
'xymcookie' 是 Yahoo 使用的非标准身份验证方法。据我所知,它没有公开记录。
没有。
请参阅 Remy 的回答。对大多数服务器使用 IMAP Append。 Gmail 不需要它,但这是非标准的。
【讨论】:
谢谢,很有帮助。【参考方案2】:直接使用 SMTP 发送电子邮件不会将电子邮件放入提供商的已发送文件夹中。您必须使用 IMAP 登录提供商并将电子邮件的副本放入已发送文件夹作为单独的操作。更高级别的应用程序,例如 iPhone 的邮件应用程序,会在内部处理这些细节。
【讨论】:
只是添加到这个答案,APPEND
命令用于通过 IMAP 将电子邮件的副本上传到已发送文件夹。
添加更多信息:有一些系统会自动放入“已发送”框:gmail 就是其中之一。这是非标准行为。
@Max:同意。例如,GoDaddy 不会自动将 SMTP 电子邮件放入“已发送”文件夹。
感谢您的澄清。以上是关于问题通过 SMTP 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Ruby 的邮件 gem 通过 smtp 发送电子邮件?