使用 Gmail 别名 link 邮件回复应用程序内容
Using Gmail aliases to link mail replies to application content
我的应用程序中有以下用例:
当应用程序中发生特定事件时,应通过电子邮件通知所有感兴趣的用户。然后,如果用户回复邮件,他的回复应该显示在应用程序的活动页面中。
我最初的想法是在每次事件发生时为主要通知电子邮件创建一个临时邮件别名,并使用 Reply-To header 中设置的别名发送通知电子邮件。然后,如果有人使用别名(比如 csa123423@mydomain.com)回复该邮件,我就可以弄清楚这个回复指的是哪个事件。
原来 Spring 的 JavaMailSender 没有提供使用别名的方法,所以我尝试使用 Gmail API。据我了解,创建 Gmail 别名意味着实际上将您域中的一个已存在的电子邮件设置为该域中另一个已存在的电子邮件的别名。因此,使用目录 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();
但据我所知,每个 domain/account 可以创建的帐户数量有一些限制,而且 Google 会为此收取更多费用。
还有其他更简单的方法可以在 Gmail 中创建别名吗?或者是否有另一种方法可以在不使用邮件别名的情况下实现所需的功能(将邮件回复链接到应用程序内容)?
尝试利用 Gmail 提供的“+”功能来创建临时别名。
基本思路是,如果我的电子邮件 ID 是 xyz@gmail.com,我可以 send/receive 一封包含 xyz+1@gmail.com 或 xyz+anything_here@gmail.com 的电子邮件,并且它会像一个魅力。
您可以通过在 Gmail ID 的“+”之后保留 alias/unique-id 来利用它,然后在您的应用程序中轻松解析此别名。
我的应用程序中有以下用例: 当应用程序中发生特定事件时,应通过电子邮件通知所有感兴趣的用户。然后,如果用户回复邮件,他的回复应该显示在应用程序的活动页面中。
我最初的想法是在每次事件发生时为主要通知电子邮件创建一个临时邮件别名,并使用 Reply-To header 中设置的别名发送通知电子邮件。然后,如果有人使用别名(比如 csa123423@mydomain.com)回复该邮件,我就可以弄清楚这个回复指的是哪个事件。
原来 Spring 的 JavaMailSender 没有提供使用别名的方法,所以我尝试使用 Gmail API。据我了解,创建 Gmail 别名意味着实际上将您域中的一个已存在的电子邮件设置为该域中另一个已存在的电子邮件的别名。因此,使用目录 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();
但据我所知,每个 domain/account 可以创建的帐户数量有一些限制,而且 Google 会为此收取更多费用。
还有其他更简单的方法可以在 Gmail 中创建别名吗?或者是否有另一种方法可以在不使用邮件别名的情况下实现所需的功能(将邮件回复链接到应用程序内容)?
尝试利用 Gmail 提供的“+”功能来创建临时别名。 基本思路是,如果我的电子邮件 ID 是 xyz@gmail.com,我可以 send/receive 一封包含 xyz+1@gmail.com 或 xyz+anything_here@gmail.com 的电子邮件,并且它会像一个魅力。
您可以通过在 Gmail ID 的“+”之后保留 alias/unique-id 来利用它,然后在您的应用程序中轻松解析此别名。