Java Spring boot starter mail上的Spring boot read和new mail侦听器
我想使用Java Spring boot starter mail上的Spring boot read和new mail侦听器,java,spring,spring-mvc,spring-boot,jakarta-mail,Java,Spring,Spring Mvc,Spring Boot,Jakarta Mail,我想使用springboot MVC演示电子邮件应用程序,在我遵循教程的web应用程序中,我可以使用springboot轻松发送电子邮件 我的问题是 如何使用spring boot阅读电子邮件 如何收听新电子邮件以及如何更新视图中的收件箱 请为我推荐任何解决方案,因为我搜索了很多,但我只能找到发送电子邮件的示例。如果您有使用spring boot的工作示例,请与我分享。谢谢。 你可以考虑使用< /P> 为此目的,有一个解决方案。 可以找到IMAP配置的示例 关键的方面是这样的 @Configur
springboot MVC
演示电子邮件应用程序,在我遵循教程的web应用程序中,我可以使用springboot轻松发送电子邮件
我的问题是
你可以考虑使用< /P>
为此目的,有一个解决方案。
可以找到IMAP配置的示例
@Configuration
@EnableIntegration
public class IntegrationConfig {
...
@Bean
public IntegrationFlow imapIdleFlow() {
return IntegrationFlows
.from(Mail.imapIdleAdapter("imap://user:pw@localhost:" + imapIdleServer.getPort() + "/INBOX")
.autoStartup(true)
.searchTermStrategy(this::fromAndNotSeenTerm)
.userFlag("testSIUserFlag")
.javaMailProperties(p -> p.put("mail.debug", "false")
.put("mail.imap.connectionpoolsize", "5"))
.shouldReconnectAutomatically(false)
.headerMapper(mailHeaderMapper()))
.channel(MessageChannels.queue("imapIdleChannel"))
.get();
}
@Bean
public HeaderMapper<MimeMessage> mailHeaderMapper() {
return new DefaultMailHeaderMapper();
}
private SearchTerm fromAndNotSeenTerm(Flags supportedFlags, Folder folder) {
try {
FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz"));
return new AndTerm(fromTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false));
}
catch (AddressException e) {
throw new RuntimeException(e);
}
}
}
@配置
@使能集成
公共类集成配置{
...
@豆子
公共集成流imapIdleFlow(){
返回积分流
.from(Mail.imapidleapter(“imap://user:pw@localhost:“+imapIdleServer.getPort()+”/INBOX”)
.AutoStart(真)
.SearchTerm策略(此::fromAndNotSeenTerm)
.userFlag(“testSIUserFlag”)
.javaMailProperties(p->p.put(“mail.debug”,“false”)
.put(“mail.imap.connectionpoolsize”,“5”))
.应自动重新连接(错误)
.headerMapper(mailHeaderMapper())
.channel(MessageChannels.queue(“imapIdleChannel”))
.get();
}
@豆子
公共HeaderMapper mailHeaderMapper(){
返回新的DefaultMailHeaderMapper();
}
private SearchTerm from和notseEnterm(标志supportedFlags,文件夹){
试一试{
FromTerm FromTerm=新的FromTerm(新的InternetAddress(“bar@baz"));
返回newandterm(fromTerm,newflagterm(新标志(Flags.Flag.SEEN),false));
}
捕获(地址e){
抛出新的运行时异常(e);
}
}
}
<代码> > p>你可以考虑使用< /p>
为此目的,有一个解决方案。
可以找到IMAP配置的示例
关键的方面是这样的
@Configuration
@EnableIntegration
public class IntegrationConfig {
...
@Bean
public IntegrationFlow imapIdleFlow() {
return IntegrationFlows
.from(Mail.imapIdleAdapter("imap://user:pw@localhost:" + imapIdleServer.getPort() + "/INBOX")
.autoStartup(true)
.searchTermStrategy(this::fromAndNotSeenTerm)
.userFlag("testSIUserFlag")
.javaMailProperties(p -> p.put("mail.debug", "false")
.put("mail.imap.connectionpoolsize", "5"))
.shouldReconnectAutomatically(false)
.headerMapper(mailHeaderMapper()))
.channel(MessageChannels.queue("imapIdleChannel"))
.get();
}
@Bean
public HeaderMapper<MimeMessage> mailHeaderMapper() {
return new DefaultMailHeaderMapper();
}
private SearchTerm fromAndNotSeenTerm(Flags supportedFlags, Folder folder) {
try {
FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz"));
return new AndTerm(fromTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false));
}
catch (AddressException e) {
throw new RuntimeException(e);
}
}
}
@配置
@使能集成
公共类集成配置{
...
@豆子
公共集成流imapIdleFlow(){
返回积分流
.from(Mail.imapidleapter(“imap://user:pw@localhost:“+imapIdleServer.getPort()+”/INBOX”)
.AutoStart(真)
.SearchTerm策略(此::fromAndNotSeenTerm)
.userFlag(“testSIUserFlag”)
.javaMailProperties(p->p.put(“mail.debug”,“false”)
.put(“mail.imap.connectionpoolsize”,“5”))
.应自动重新连接(错误)
.headerMapper(mailHeaderMapper())
.channel(MessageChannels.queue(“imapIdleChannel”))
.get();
}
@豆子
公共HeaderMapper mailHeaderMapper(){
返回新的DefaultMailHeaderMapper();
}
private SearchTerm from和notseEnterm(标志supportedFlags,文件夹){
试一试{
FromTerm FromTerm=新的FromTerm(新的InternetAddress(“bar@baz"));
返回newandterm(fromTerm,newflagterm(新标志(Flags.Flag.SEEN),false));
}
捕获(地址e){
抛出新的运行时异常(e);
}
}
}
如果您询问如何基于Spring Boot和用于邮件接收的Java库(例如Subetha SMTP)接收电子邮件,您可以检查如果您询问如何基于Spring Boot和用于邮件接收的Java库(例如Subetha SMTP)接收电子邮件,您可以检查package com.grandview.service;
导入java.io.IOException;
导入java.util.Properties;
导入javax.annotation.PostConstruct;
导入javax.mail.Folder;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.mail.Session;
导入javax.mail.Store;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.scheduling.annotation.Scheduled;
导入org.springframework.stereotype.Service;
导入com.grandview.model.EmailConfig;
导入com.grandview.util.MessageParser;
@服务
公共类电子邮件服务{
@自动连线
私有EmailConfig EmailConfig;
文件夹电子邮件文件夹;
商店;
属性=新属性();
@施工后
无效设置(){
String server=emailConfig.getHost();
properties.put(“mail.pop3.host”,服务器);
properties.put(“mail.pop3.port”,emailConfig.getPort());
//properties.put(“mail.pop3.starttls.enable”、“true”);
会话emailSession=Session.getDefaultInstance(属性);
Store=null;
试一试{
store=emailSession.getStore(“pop3s”);
连接(服务器,emailConfig.getUsername(),emailConfig.getPassword());
emailFolder=store.getFolder(“收件箱”);
}捕获(消息异常e){
e、 printStackTrace();
}
}
@计划(固定利率=5000)
synchronized void read()引发MessaginException,IOException{
emailFolder.open(文件夹只读);
Message[]messages=emailFolder.getMessages();
for(int i=0;i
包com.grandview.service;
导入java.io.IOException;
导入java.util.Properties;
导入javax.annotation.PostConstruct;
导入javax.mail.Folder;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.mail.Session;
导入javax.mail.Store;
导入org.springframework.beans.factory.annotation.Autowire