使用Gmail别名将邮件回复链接到应用程序内容

时间:2018-01-04 11:37:25

标签: java spring gmail gmail-api google-directory-api

我的应用中有以下用例: 当应用程序中发生特定事件时,应通过电子邮件通知所有感兴趣的用户。然后,如果用户回复该电子邮件,他的回复应显示在应用程序的事件页面中。

我最初的想法是每当事件发生时创建主通知电子邮件的临时邮件别名,并发送带有Reply-To标头中设置的别名的通知电子邮件。然后,如果有人使用别名回复该邮件(让我们说csa123423@mydomain.com)我可以找出这个回复引用的事件。

事实证明,Spring的JavaMailSender并没有提供使用别名的方法,因此我尝试使用Gmail API。据我所知,创建Gmail别名意味着实际在您的域中设置已存在的电子邮件,作为该域中另一个已存在的电子邮件的别名。因此,使用Directory API和Gmail API实现此目的的Java代码如下所示:

User newUser = new User();
UserName userName = new UserName();
userName.setGivenName("xsd");
userName.setFamilyName("ewrewr");
newUser.setPrimaryEmail("bbb34262bb45@mydomain.com");
newUser.setPassword("12345");
newUser.setName(userName);
User result = directoryService.users().insert(newUser).execute();

SendAs sendAs = new SendAs().setSendAsEmail("bbb34262bb45@mydomain.com").setReplyToAddress("bbb34262bb45@mydomain.com").setDisplayName("My name").setTreatAsAlias(true);
SendAs sendAsResult = gmailService.users().settings().sendAs().create(user, sendAs).execute();

MimeMessage emailContent = createEmail("mymail@gmail.com", "bbb34262bb45@mydomain.com", "Test from app", "Test body");
Message message = createMessageWithEmail(emailContent);
message = gmailService.users().messages().send(user, message).execute();

但据我所知,您可以为每个域/帐户创建的帐户数量有一些限制,Google也会为此收取更多费用。

还有另一种在Gmail中创建别名的简单方法吗?或者是否有另一种方法可以实现所需的功能(将邮件回复链接到应用程序内容)而不使用邮件别名?

1 个答案:

答案 0 :(得分:1)

尝试利用Gmail提供的“+”功能来创建临时别名。 基本的想法是,如果我的电子邮件ID是xyz@gmail.com,我可以使用xyz+1@gmail.com或xyz+anything_here@gmail.com发送/接收电子邮件,它将像魅力一样工作。

您可以通过在Gmail ID中的“+”后面保留别名/唯一ID来利用此功能,然后在您的应用中轻松解析此别名。