【发布时间】:2017-06-20 10:56:21
【问题描述】:
我有一个 Web 应用程序,我在其中向用户发送邮件。以下是我的代码。
String host = "smtp.gmail.com";
String pwd = "123";
String from = "sender@gmail.com";
String to = "receiver@gmail.com";
String subject = "Test";
String messageText = "This is demo mail";
int port = 587;
boolean sessionDebug = false;
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.required", "true");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] add = {new InternetAddress(to)};
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setRecipients(Message.RecipientType.TO, add);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText); //Actual msg
Transport transport = mailSession.getTransport("smtp");
transport.connect(host, from, pwd);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
此代码在本地执行,但在服务器域上失败。我进行了很多搜索,但该解决方案对我不起作用。
我尝试了很多,例如将 transport.connect(host, from, pwd); 替换为 transport.connect(host, 587, from, pwd); or 465 以及将 String host="smtp.gmail.com"; 替换为静态域 IP。但仍然无法正常工作。
谁能弄清楚我错过了什么..?
【问题讨论】:
-
不工作意味着您收到错误消息?如果是这样,添加堆栈跟踪
-
代码没有错误。该代码在本地运行良好。但在服务器上失败。
-
这看起来像是 DNS/Route/Firewall 问题,请确保您可以在 Google 邮件服务器上使用
ping并且telnet stmp.gmail.com在您的服务器上也能正常工作。
标签: java spring-mvc jakarta-mail