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

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

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

我最初的想法是每次发生事件时创建主通知电子邮件的临时邮件别名,并使用在回复 header 中设置的别名发送通知电子邮件。然后,如果有人使用别名(比方说 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 中创建别名吗?或者是否有另一种方法可以在不使用邮件别名的情况下实现所需的功能(将邮件回复链接到应用程序内容)?

最佳答案

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

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

关于java - 使用 Gmail 别名将邮件回复链接到应用程序内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48094442/

相关文章:

java - 覆盖 spring boot 包 jar 中的 messages.properties

css - 除了 "background-position"之外,还有其他方法可以在 Gmail 中获得支持吗?

Python - imaplib - 查看发送给特定发件人的消息

asp.net - 通过gmail发送Asp.Net电子邮件

java - hibernate3 maven 插件 :make hbm2java generate hibernate annotations instead of ejb3 annotations

java - 如何检查 BackStack 是否为空

java - WireMock 失败并出现 NoSuchMethodError HttpServletResponse.getHeader

jasper-reports - IReport 预览中和使用 Jasperreports API 生成报告的不同结果

java - 在 AWS 中更改 Spring Boot Web 应用程序的 application.properties

java - AnnotationSessionFactoryBean 的问题