gmail api 与传统 smtp

gmail api vs traditional smtp

在Java世界

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

两者的优缺点

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

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

现在有什么缺点吗?好吧,直到大约六个月前,如果用户更改了他们的密码,我会说是的,你的 SMTP 解决方案将不再工作,而你的 Oauth 解决方案可以。但是 Google 最近做了一个更改,如果用户更改那里的密码并且您正在使用邮件范围进行身份验证,那么所有刷新令牌都将过期。所以现在如果用户更改他们的密码,在用户更新应用程序中的密码之前,这两种解决方案都不会起作用。

让我们谈谈作用域

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

https://www.googleapis.com/auth/gmail.readonly Read all resources and their metadata—no write operations.
https://www.googleapis.com/auth/gmail.compose Create, read, update, and delete drafts. Send messages and drafts.

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

因此,将 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 我自己还没有时间使用它,但它看起来很有趣。所以我不能评论它的价值。