问题通过 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 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

Python 通过 SMTP 发送邮件

如何使用 Ruby 的邮件 gem 通过 smtp 发送电子邮件?

通过邮件 gem 发送 smtp 电子邮件会导致 554 5.7.0 Reject

如何在php中使用ssl通过smtp发送邮件

使用 PHPMailer 通过 SMTP 发送电子邮件

通过 SMTP 使用 AWS SES 发送电子邮件,错误 421