1
package com.example.web;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.annotation.Resource;
@WebServlet("/SendMail")
public class SendMail extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String host = "smtp.gmail.com";
String from = "email";
String pass = "password";
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", pass);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
Session session = Session.getInstance(props, new GMailAuthenticator(from, pass));
response.setContentType("text/html");
PrintWriter out = response.getWriter();
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from,"Magazin Online"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("send_to")));
message.setSubject("Test Email");
message.setText(request.getParameter("message"));
// Send message
Transport.send(message);
out.println("message sent");
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at javax.mail.Transport.send0(Transport.java:188)
at javax.mail.Transport.send(Transport.java:118)
at com.example.web.SendMail.doPost(SendMail.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1042)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
これは電子メールの送信に使用されるコードです。 localhostのTomcat 7で動作しますが、OpenShiftのTomcat 7では動作しません。 しかし、JBoss Application Server 7はOpenShift上で動作します。 これはなぜ起こっているのですか?JavaMailはJBOSS Application Server 7と連携しますが、OpenShiftのTomcat7では動作しません。
私は受け取った!私はセキュリティオプションを少なくしてセキュリティを変更しました。これはOpenshiftとlocalhost Tomcat 7のJBOSS AS7で動作しますが、OpenShiftからTomcat 7を解決しませんでした。 Gmailのサーバーをyahooで変更したので、Googleの考えには問題がありました。 –
@RaduBurlacu、私も前に同じ問題に直面しています。私はGoogleのセキュリティ設定を変更して解決しました。あなたの問題を解決したら、答えを親切に受け入れてください。 – Gangaraju
こんにちは@RaduBurlacu、これか何かの答えがあなたの質問を解決したら、[それを受け入れる]ことを検討してください(http://meta.stackexchange.com/q/5234/179419)チェックマークをクリックします。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – Gangaraju