我必须从我的Gmail帐户阅读新电子邮件。为此,我正在使用spring集成项目。下面是我的代码
@Component
public class EmailAdapter {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private EmailReceiverService emailReceiverService;
@Bean
@InboundChannelAdapter(value = "emailChannel", poller = @Poller(fixedDelay = "10000"))
public MailReceivingMessageSource mailMessageSource(MailReceiver imapMailReceiver) throws MessagingException {
emailReceiverService.messageSource();
return new MailReceivingMessageSource(imapMailReceiver);
}
@Bean
@Value("imaps://<username>:<password>@imap.gmail.com:993/inbox")
public MailReceiver imapMailReceiver(String imapUrl) {
ImapMailReceiver imapMailReceiver = new ImapMailReceiver(imapUrl);
imapMailReceiver.setShouldMarkMessagesAsRead(true);
imapMailReceiver.setShouldDeleteMessages(false);
return imapMailReceiver;
}
@ServiceActivator(inputChannel = "emailChannel")
public void emailMessageSource(javax.mail.Message message) {
logger.info("Message received");
}
}
在我的应用程序正常启动后,调度程序尝试从收件箱中接收电子邮件,但是当向该帐户发送新电子邮件时,根本没有调用服务激活器。我之所以这样说,是因为我看不到任何日志。
应用程序启动后,请检查输出。
com.test.email.EmailApplication : Started EmailApplication in 4.807 seconds (JVM running for 5.295)
[ask-scheduler-1] o.s.integration.mail.ImapMailReceiver : attempting to receive mail from folder [INBOX]
enter code here
我在这里缺少什么配置?有人可以帮忙吗?
更新
我创建了一个新的Gmail帐户,并尝试了该帐户。我可以阅读电子邮件,以防新电子邮件发送到该帐户。但是,当我尝试读取我的电子邮件帐户(该电子邮件帐户是我所在组织的电子邮件帐户)时,它不起作用。我认为我缺少一些配置。
答案 0 :(得分:1)
请遵循此example。即使它使用XML进行配置,您也可以轻松地将其转换为基于注释的方法。 根据我在Gmail方面的经验,需要在Gmail帐户设置中启用某些功能,并提供其他属性,您也可以从上面的示例中看到这些属性。