如何解决如何在Java中创建模拟电子邮件服务?
我正在编写一个具有不同模拟服务的小型测试库,例如HTTP,SFTP,存储桶,电子邮件。
当涉及到电子邮件模拟服务时,我有一个想法。我找到了Apace James docs和an article,但是我看不到如何使它适应我的界面,并且与SMTP服务器一起使用时会造成混乱。
interface TestServer {
void start();
void stop();
}
这个想法是创建一个实现,因此整个设置将在构造函数中,而我只需要在设置和拆卸阶段就可以启动和停止Mock。
我该如何使用Apache James服务?
我使用Java 11,Spring Boot和JUnit 5。
解决方法
您可以使用org.apache.james.smtpserver.netty.SMTPServer
来实现。为此,您将需要一些依赖项。
对于成绩:
implementation group: 'org.apache.james',name: 'james-server-protocols-smtp',version: '3.5.0'
implementation group: 'org.apache.james',name: 'metrics-api',name: 'metrics-logger',version: '3.5.0'
implementation group: 'org.apache.james.protocols',name: 'protocols-netty',version: '3.5.0'
对于 Maven :
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-protocols-smtp</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.james.protocols</groupId>
<artifactId>protocols-netty</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>metrics-api</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>metrics-logger</artifactId>
<version>3.5.0</version>
</dependency>
SMTPServer
是james-server-protocols-smtp
的一部分,但其他指标也是必需的。
接口的示例实现如下所示:
public class MySmtpServer implements TestServer {
private final SMTPServer smtpServer;
public MySmtpServer(final int port) {
MetricFactory metricFactory = new DefaultMetricFactory();
SmtpMetrics smtpMetrics = new SmtpMetricsImpl(metricFactory);
SMTPServer smtpServer = new SMTPServer(smtpMetrics);
smtpServer.setListenAddresses(new InetSocketAddress(port));
this.smtpServer = smtpServer;
}
@Override
public void start() {
smtpServer.start();
}
@Override
public void stop() {
smtpServer.stop();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。