从Gmail smtp切换到Gmail rest api时可能存在的陷阱

从Gmail smtp切换到Gmail rest api时可能存在的陷阱,smtp,gmail,google-oauth,gmail-api,Smtp,Gmail,Google Oauth,Gmail Api,谷歌提供了两种访问Gmail的系统。Gmail中SMTP的作用域是。然而,对于Gmail RESTAPI,只能使用所需的作用域(如send、modify) 这两种发送电子邮件的实现之间的主要区别是什么?我一直在使用SMTP发送邮件,没有任何问题,但因为这涉及到OAuth2的更大范围,我想知道使用API方法是否有任何可能的风险 说附件大小有限制 此方法支持/upload URI,并接受带有 以下特征: 最大文件大小:35MB接受的媒体MIME类型:消息/rfc822 如果我开始为OAuth2使用G

谷歌提供了两种访问Gmail的系统。Gmail中SMTP的作用域是。然而,对于Gmail RESTAPI,只能使用所需的作用域(如send、modify)

这两种发送电子邮件的实现之间的主要区别是什么?我一直在使用SMTP发送邮件,没有任何问题,但因为这涉及到OAuth2的更大范围,我想知道使用API方法是否有任何可能的风险

说附件大小有限制

此方法支持/upload URI,并接受带有 以下特征:

最大文件大小:35MB
接受的媒体MIME类型:消息/rfc822

  • 如果我开始为OAuth2使用Gmail API而不是SMTP连接,我还应该知道还有什么区别吗
  • 另外,提供完全访问作为SMTP/IMAP唯一可能的作用域的原因是什么 注:我唯一的要求是能够发送电子邮件

    使用,您可以直接访问位于mail.google.com的邮件服务器。SMTP服务器从60年代就已经存在,它们没有能力限制您的访问权限。当您登录时,您可以完全访问邮件服务器所能执行的操作。要登录SMTP服务器,您需要您希望访问的帐户的登录名(通常是电子邮件地址)和密码。使用SMTP连接Gmail的缺点是,如果用户更改了密码,您将失去访问权限。对于第三方开发人员来说,在您的系统中存储用户登录名和密码也是一种糟糕的做法。例如:我不会让任何应用程序访问我的登录名和谷歌的密码。你怎么能向我证明你的系统是安全的?如果你被黑了,我也是

    现在开始。Oauth大约在2005年左右出现,当时人们希望能够访问API,而不必做像这样愚蠢的事情

    如果内存服务最初是为twitterapi创建的,那么开发者希望能够访问他们的用户twitter帐户,而不必存储他们的登录名和密码。同样,这个问题的主要问题是,有问题的开发人员将拥有对用户twitter帐户的完全访问权限,如果用户或开发人员更改了密码,则一切都将中断

    所以他们创造了OAuth。OAuth的主要功能包括:

  • 您可以限制对应用程序的访问:(只读、读写)
  • 密码更改不会影响访问
  • 不与第三方应用程序的开发人员共享帐户凭据
  • 因此,作为一名将Oauth与任何Google API一起使用的开发人员,我的主要观点是不必存储用户的登录名和密码,也不必受密码更改的影响。我的用户可能会说,不必与我共享他们的登录名,并且可以让我的应用程序有限地访问他们的帐户

    现在回到Gmail。谷歌在大约两个月前做了一项更改,当用户更改密码时,使用Gmail作用域创建的任何刷新令牌(oauth2)都将自动过期。据我所知,这只是Gmail。这样就从oauth的特性中删除了第二点

    假设你需要能够发送电子邮件,那么你应该使用哪一种方式取决于你自己。那么,在应用程序中限制只读访问并不是您需要的(第一点)。然而,在我看来,从安全的角度来看,我永远不会要求我的用户给我他们的登录名和密码,我会选择oauth2。是的,SMTP可以工作,谷歌会关闭它吗?用户可能不会一直被授予访问其电子邮件提供商的直接SMTP服务器的权限,比如outlook之类的应用程序如何工作


    至于SMTP对OAuth的支持,不幸的是,我还没有对我需要阅读的猜测做太多研究。如果您可以将OAuth与SMTP服务器一起使用,那么我想问题还是要归结为访问SMTP服务器或RESTAPI服务器的速度更快?我真的想不出有什么不同。带有RESTAPI的附件可能很棘手。我可以在这个问题上再深入一点

    我投票结束这个问题,因为这是关于谷歌升级smtp服务器的计划。Stack无法回答的问题。@DalmTo这是问题的一部分。我把它取下来。但我的问题主要是了解API和SMTP实现之间的区别。我认为这是Stack可以回答的问题。请让我知道,如果我应该重新定义它。然后它可能只是广泛的或基于意见的,因为我们不是谷歌,不能知道他们的系统的内部工作原理。请阅读给你一些答案,我会说SMTP访问是老派的,你可以使用登录名和密码,这意味着它授予你完全访问一个帐户有真正的没有办法限制这一点。Oauth2是一种更新的方式,它可以更安全地访问Google API。根据OAuth规范,访问可以受到身份验证范围的限制。在大多数情况下,用户更改密码不会删除您的访问权限。但是,使用gmail作用域将使所有使用gmail作用域创建的刷新令牌无效,用户更改密码后这些令牌将无效。@DalmTo谢谢您的回答。我很难理解你的上一句话——“使用gmail作用域将使所有使用gmail作用域创建的刷新令牌无效,用户更改密码后将无效。”这是否意味着如果我使用完整的gmail作用域,用户更改密码,该用户的刷新令牌将过期,而其他作用域则不会过期?谢谢您的详细回答。我不会问用户的密码你的最后一段才是我真正想要的。如果使用RESTAPI可能会导致任何障碍或性能问题