如何可靠地验证我是否可以通过Google的smtp服务器发送电子邮件,以查找可能是也可能不是发送别名的电子邮件地址?

时间:2014-03-05 01:37:05

标签: smtp google-api smtp-auth google-email-settings-api

我正在使用Google的smtp服务器使用oauth2发送电子邮件。如果我想使用不同的“发件人”地址发送,Google会让我指定一个。如果发件人地址是经过验证的帐户别名,Google将在电子邮件中使用该地址。如果它不是经过验证的发送别名,谷歌将默默地(我认为)交换来自地址。

我有什么方法可以通过API告诉Google是否会使用提供的电子邮件地址?也许我在问我是否有任何方法可以判断一封电子邮件是否是一个帐户的发送地址,但我对其他解决方案持开放态度,以了解更大的问题,即了解Google是否会尊重所提供的地址。

3 个答案:

答案 0 :(得分:1)

如果这些是Google Apps帐户,您可以使用Email Settings APIlist send as addresses for the account

如果他们不是Google Apps帐户,或者您更喜欢更通用的方法,那么您可以:

  1. 通过SMTP直接从该地址向经过身份验证的用户发送电子邮件。请务必在发送之前设置唯一的消息ID,以便通过以下方式跟踪消息。

  2. 通过IMAP using OAuth authentication(与SMTP相同的API范围)和search for the sent message通过message ID(rfc822msgid)连接到用户的邮箱。

  3. 抓住邮件的标题,查看From:标题。如果它与您发送的内容相匹配,则允许用户作为该地址发送。如果已将其重置为经过身份验证的用户的主要地址,则不允许该用户以该地址发送。

答案 1 :(得分:0)

您需要添加自己的SMTP服务器才能使用经过验证的地址发送邮件。

SMTP configuration

答案 2 :(得分:0)

据我所知,gmail没有API函数来确定gmail是否会在您通过Gmail帐户发送的外发电子邮件中使用您指定的地址。

但是,检查gmail是否使用您提供的发件人地址的另一种方法可能是将测试邮件发送到电子邮件地址,从而将到此地址的传入邮件转发到解析传入邮件的标头的脚本,确定消息的起始地址。如果您在安装了PHP或其他某种脚本语言的Linux服务器上运行MTA,那么将其拼凑在一起并不难。见http://harrybailey.com/2009/02/send-or-pipe-an-email-to-a-php-script/

另一种方法是使用邮件提供程序(例如Sendgrid),它提供了一种功能,可以解析到域中地址的传入消息,并将标题发布到Web服务器上的脚本中(请参阅{{ 3}})。