我正在使用Spring Integration Mail来处理imap闲置事件。我想用token来实现IMAP gmail客户端,而不是使用用户名和密码,请问Spring Integration Mail IMAP是否支持OAuth2?
Spring Integration Mail IMAP是否可以用访问令牌连接到gmail商店?
以下是我使用的代码
IntegrationFlow flow = IntegrationFlows
.from(Mail.imapIdleAdapter("imaps://[username]:[password]@imap.gmail.com:993/inbox")
.javaMailProperties(p -> p
.put("mail.debug", "false")
.autoStartup(false)
.shouldReconnectAutomatically(true)
.userFlag("testSIUserFlag")
.headerMapper(new DefaultMailHeaderMapper()))
.handle((Message<?> message) -> {
logger.info("message: " + message);
})
.get();
好吧,听起来我们只需要执行一些REST请求来获取令牌,并与一些Java Mail属性一起将其设置为URL,而不是该URL [password]
占位符。https:/kgiann78.github.iojavagmail20170316JavaMail-send-mail-at-Google-with-XOAUTH2.html。
Properties props = new Properties();
props.put("mail.imap.ssl.enable", "true"); // required for Gmail
props.put("mail.imap.sasl.enable", "true");
props.put("mail.imap.sasl.mechanisms", "XOAUTH2");
props.put("mail.imap.auth.login.disable", "true");
props.put("mail.imap.auth.plain.disable", "true");
为了这个目的,听起来你应该使用动态流注册,所以你可以先执行令牌请求,然后再进行注册。Mail.imapIdleAdapter()
基于第一个请求的结果。https:/docs.spring.iospring-integrationdocscurrentreferencehtmldsl.html#java-dsl-runtime-flows。