【问题标题】:gmail api vs traditional smtpgmail api 与传统 smtp
【发布时间】:2017-03-08 11:44:38
【问题描述】:

在 Java 世界中

想知道是否有人有关于通过 gmail api 发送电子邮件与通过 java 邮件服务配置的 gmail smtp 服务配置进行比较的信息。

两者的优缺点

群发邮件可以一个连接触发 5 封单独的邮件吗?

【问题讨论】:

    标签: google-api gmail gmail-api


    【解决方案1】:

    使用 SMTP / IMAP 与 Gmail API 的主要区别。 IMO 将是您登录的方式。 SMTP 和 IMAP 允许您使用客户端登录(登录名和密码)进行身份验证,而 Gmail API 将要求您使用开放式身份验证 (Oauth2)。

    现在有什么缺点吗?直到大约六个月前,如果用户更改密码,您的 SMTP 解决方案将不再有效,而您的 Oauth 解决方案将不再有效。然而,谷歌最近做了一个改变,如果用户在那里更改密码并且您使用邮件范围进行身份验证,那么所有刷新令牌都将过期。因此,现在如果用户更改他们的密码,则在用户更新应用程序中的密码之前,任何解决方案都不会起作用。

    让我们谈谈作用域

    当您使用 Oauth2 进行身份验证时,您必须请求您请求的访问范围。有很多电子邮件范围,您可以在here 中找到它们。让我们看两个。

    https://www.googleapis.com/auth/gmail.readonly 读取所有资源及其元数据 - 无写入操作。
    https://www.googleapis.com/auth/gmail.compose 创建、读取、更新和删除草稿。发送消息和草稿。

    现在用户倾向于喜欢那里的隐私,并且通常不喜欢授予应用程序不需要的权限。如果您的应用程序的目的只是显示用户的电子邮件,那么您就不需要写权限了,对吗?因此,如果您请求写入权限但不需要它,一些用户会拒绝运行您的应用程序。

    因此,将 Gmail API 与 Oauth 结合使用将允许您仅请求所需的访问范围。

    现在 SMTP 和 IMAP 直接与邮件服务器通信,实际上无法设置您被授予的访问量。您拥有对该帐户的完全访问权限。

    我不是 Java 开发人员,我实际上是 .net 开发人员。话虽如此,我认为您可能需要考虑可用的库以及它们的易用性。官方的 Google Java 客户端库可能与 Google .Net 客户端库非常相似,并且它可能经过很好的测试,可与 Gmail 和稳定版一起使用。可能还有很多关于如何使用它的教程。

    现在您必须找到一个 SMTP 或 IMAP 库,并弄清楚它如何与 GMail 邮件服务器一起工作。然后你必须看看你是否也能找到它的教程。

    批处理

    大多数 Google API 都支持batching endpoint。重要提示:在测试时使用虚拟电子邮件帐户,如果您被禁止,您不想锁定您的个人 gmail 帐户。

    我确信 SMTP 服务器以某种方式支持批处理。

    配额

    配额是您每天可以针对 API 发出的请求数。

    就 SMTP 而言,我不知道有任何配额。

    注意:

    您可以将 OAuth 与 SMTP 服务器一起使用,上面的文档是 here 我自己还没有时间玩它,但它看起来很有趣。所以我不能评论它的价值。

    【讨论】:

    • 如此超越oauth - 没有区别?一个连接可以触发多封电子邮件吗?我确实让它工作了我需要开始正确地测试它github.com/vahidhedayati/gmail-api-test - 问题是试图理解确切的差异,例如在当前的 smtp 方法中 - 实现了额外的代码来验证 gmail 收到/处理电子邮件。 {try catch} 如果没有,则重新排队电子邮件
    • 刚想到另一个配额。就 API 而言,您的刷新令牌可能会发送配额限制允许的尽可能多的请求。但是,如果 Google 认为您的垃圾邮件可能会将您拒之门外,我会注意的。
    猜你喜欢
    • 2011-04-12
    • 2017-10-15
    • 2010-11-14
    • 2011-04-16
    • 2013-11-24
    • 2011-05-05
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多