我正在尝试配置我的应用程序以在JBoss 7.10.GA中发送电子邮件。一切看起来都配置正确,但是当我测试我的代码时,它会抛出一个错误:
javax.mail.MessagingException:无法连接到SMTP主机:localhost,port:25;
它似乎没有在我的standalone.xml文件中找到正确的电子邮件配置,因为它只是默认为localhost端口25.从我读过的所有表单中,这是所有需要完成的配置,但我必须是遗失了什么。
<subsystem xmlns="urn:jboss:domain:mail:1.1">
<mail-session jndi-name="java:jboss/mail/Gmail">
<smtp-server ssl="true" outbound-socket-binding-ref="mail-gmail-smtp">
<login name="email@gmail.com" password="password"/>
</smtp-server>
</mail-session>
</subsystem>
<socket-binding-group...
<outbound-socket-binding name="mail-gmail-smtp">
<remote-destination host="smtp.gmail.com" port="465"/>
</outbound-socket-binding>
</socket-binding-group>
我在班上有这个:
import javax.annotation.Resource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServlet;
public class SendEmail extends HttpServlet {
@Resource(lookup = "java:jboss/mail/Gmail")
private Session mailSession;
public SendEmail() {
try {
MimeMessage m = new MimeMessage(mailSession);
Address from = new InternetAddress("email@gmail.com");
Address[] to = new InternetAddress[] { new InternetAddress(
"email@gmail.com") };
m.setFrom(from);
m.setRecipients(Message.RecipientType.TO, to);
m.setSubject("Google JavaMail Test");
m.setContent("Test from inside JBoss AS7 Server", "text/plain");
Transport.send(m);
} catch (javax.mail.MessagingException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
我发现解决方案使其在本地工作,但在部署到OpenShift时没有,这是由于找不到资源名称。
我删除了:
@Resource(lookup = "java:jboss/mail/Gmail")
并补充说:
InitialContext ic = new InitialContext();
mailSession = (Session)ic.lookup("java:jboss/mail/Gmail");
这是我引用的文章
https://java.net/jira/browse/GLASSFISH-13836
更新: 发送电子邮件适用于我的本地配置,但当我将其部署到OpenShift时,我收到以下错误:
javax.naming.NameNotFoundException:名称[jboss / mail / Gmail]未在此上下文中绑定。无法找到[jboss]。
我认为这是因为它在我的本地副本上设置并且没有转移到OpenShift。现在我需要找到我需要在.openshift / config目录中添加这些声明的文件。有人知道吗?