Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以将MailDev与Java一起使用吗?_Java_Email_Smtp_Jakarta Mail - Fatal编程技术网

可以将MailDev与Java一起使用吗?

可以将MailDev与Java一起使用吗?,java,email,smtp,jakarta-mail,Java,Email,Smtp,Jakarta Mail,我在远程服务器上安装了一个实例 我试图了解是否有可能使用这个假的SMTP服务器用Java(使用标准JavaMailSender)发送电子邮件 配置只需要URL和端口,但在我的例子中,它不起作用 它总是返回: 邮件服务器连接失败;嵌套异常为com.sun.mail.util.MailConnectException:无法连接到主机… WebUI运行正常,我可以在服务器上看到空的收件箱 谢谢。您似乎遇到了连接问题。虽然我不能告诉你原因是什么,也许我可以提供一个替代方案来测试你的电子邮件 使用,您可以

我在远程服务器上安装了一个实例

我试图了解是否有可能使用这个假的SMTP服务器用Java(使用标准JavaMailSender)发送电子邮件

配置只需要URL和端口,但在我的例子中,它不起作用

它总是返回:
邮件服务器连接失败;嵌套异常为com.sun.mail.util.MailConnectException:无法连接到主机…

WebUI运行正常,我可以在服务器上看到空的收件箱


谢谢。

您似乎遇到了连接问题。虽然我不能告诉你原因是什么,也许我可以提供一个替代方案来测试你的电子邮件

使用,您可以运行嵌入式SMTP服务器并在junit测试中查询该服务器。我在我的开源项目中经常使用这一点,并为此创建了:

包testutil.testrules;
导入org.jetbrains.annotations.NotNull;
导入org.junit.rules.ExternalResource;
导入org.subethamail.smtp.server.SMTPServer;
导入org.subethamail.wiser.wiser;
导入org.subethamail.wiser.WiserMessage;
导入javax.mail.MessaginException;
导入javax.mail.internet.mimessage;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.PrintStream;
导入java.util.Iterator;
导入java.util.List;
/**
*SmtpServerRule—包装Wiser实例(Java中的SMTP服务器)的测试规则,在每次测试前后启动和停止。
*
*SmtpServerRule通过将实现委托给实例来公开与{@link Wiser}实例相同的方法。然而,这些方法不可能是有效的 *在JUnit语句外部使用(否则会引发{@link IllegalStateException})。 *
*{@link Wiser}实例可以直接检索,但也只能从JUnit语句内部检索。 */ 公共类SmtpServerRule扩展了ExternalResource{ 私人最终智者智者=新智者(); 私人最终国际港口; 公共SmtpServerRule(@NotNull整数端口){ this.port=端口; } @凌驾 在()之前受保护的无效{ this.wiser.setPort(端口); 这个.wiser.start(); } @凌驾 受保护的空后(){ 这个。更聪明。停止(); } @NotNull 公众智者变得智者{ checkState(“getWiser()”); 还这个。更聪明; } @NotNull 公共列表getMessages(){ checkState(“getMessages()”); 返回wiser.getMessages(); } @NotNull 公共MIMessage getOnlyMessage(字符串信封接收者) 抛出消息异常{ checkState(“getMessages()”); List messages=getMessages(); assertThat(messages).hasSize(1); 迭代器迭代器=messages.Iterator(); WiserMessage WiserMessage=iterator.next(); 断言(wiserMessage.getEnveloperReceiver()).isEqualTo(EnveloperReceiver); mimessage MimeMessage=wiserMessage.getmimessage(); iterator.remove(); 返回mimeMessage; } @NotNull 公共MIMessage和开发getOnlyMessage() 抛出消息异常{ checkState(“getMessages()”); List messages=getMessages(); assertThat(messages).hasSize(1); 迭代器迭代器=messages.Iterator(); WiserMessage WiserMessage=iterator.next(); iterator.remove(); 返回新的mimessageanddevelope(wiserMessage.getmimessage(),wiserMessage.getEnvelopeSender()); } @NotNull 公共MIMessage getMessage(字符串信封接收者) 抛出消息异常{ checkState(“getMessages()”); List messages=getMessages(); 迭代器迭代器=messages.Iterator(); while(iterator.hasNext()){ WiserMessage WiserMessage=iterator.next(); if(wiserMessage.GetEnveloperReceiver().equals(EnveloperReceiver)){ mimessage MimeMessage=wiserMessage.getmimessage(); iterator.remove(); 返回mimeMessage; } } 抛出新的断言错误(“未找到收件人的邮件”+信封收件人); } @NotNull 公共SMTPServer getServer(){ checkState(“getServer()”); 返回wiser.getServer(); } 公共布尔接受(字符串发件人、字符串收件人){ 检查状态(“接受(字符串,字符串)”; 更明智地返回。接受(来自,接收者); } 公共void传递(字符串发件人、字符串收件人、InputStream数据) 抛出IOException{ 检查状态(“交付(字符串、字符串、输入流)”; 更明智地交付(来自、接收者、数据); } 公共无效转储消息(打印流输出) 抛出消息异常{ 检查状态(“转储消息(打印流)”; 更明智的。转储消息(输出); } 私有void checkState(字符串方法){ if(this.wiser==null){ 抛出新的IllegalStateException(格式(“%s”不能在JUnit语句之外调用),方法); } } }
然后我就这样使用它:

公共类MailerLiveTest{
专用静态最终整数服务器_端口=251;
@统治
公共最终SmtpServerRule SmtpServerRule=新SmtpServerRule(服务器\端口);
@以前
公共作废设置(){
mailer=MailerBuilder.withSMTPServer(“localhost”,SERVER_PORT).buildMailer();
}
@试验
public void createMailSession_EmptySubjectAndBody(){
//使用mailer发送邮件,该邮件发送到localhost:251
mimessageanddevelope receivedMimeMessage=smtpServerRule.getOnlyMessage();
Email receivedEmail=EmailConverter.mimeMessageToEmail(receivedMimeMessage.getMimeMessage());
//对电子邮件对象执行断言。。。
}
}

看起来像是连接问题。是否有防火墙或防病毒软件阻止通话?您能否从运行Java客户机的机器上访问MailDev服务器