为什么我不能从我的servlet发送电子邮件?

我正在尝试从我的servlet发送一封电子邮件。 没有例外,但我没有在我的帐户中收到电子邮件。 我使用以下代码:

public class SendEmailServlet extends HttpServlet { @SuppressWarnings({ "unchecked" }) public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); PrintWriter out = resp.getWriter(); PersistenceManager pm = PMF.get().getPersistenceManager(); try { String to[] = {"mygmail@gmail.com"}; String host = "smtp.gmail.com"; String username = "mygmail@gmail.com"; String password = "password"; Properties props = new Properties(); props.put("mail.smtps.auth", "true"); // ... Session session = Session.getInstance(props); MimeMessage msg = new MimeMessage(session); // set the message content here msg.setFrom(new InternetAddress(username,"Me")); msg.setSubject("Testing"); msg.setText("Testing..."); Address[] addresses = new Address[to.length]; for (int i = 0; i < to.length; i++) { Address address = new InternetAddress(to[i]); addresses[i] = address; // Add the given addresses to the specified recipient type. msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to[i])); } Transport t = session.getTransport("smtps"); t.connect(host, username, password); t.sendMessage(msg, msg.getAllRecipients()); t.close(); out.println(0); } } catch (Exception e) { System.out.println("Exception error: " + e); out.println(e); } finally { pm.close(); } } 

}

我现在得到以下例外:

  Exception error: java.security.AccessControlException: access denied (java.net.SocketPermission smtp.gmail.com resolve) 

任何人都可以告诉我为什么我没有收到电子邮件,这是什么错误的代码。 提前致谢

阅读https://developers.google.com/appengine/docs/java/mail/overview基本上停止在您的应用中包含任何JavaMail库,不要尝试连接到主机。 构建消息并直接跳转到Transport.send(msg);

似乎错误是:

 props.put("mail.smtp.host","localhost"); 

在您的系统上运行邮件服务器之前,它不应该是localhost

看看这个问题: 使用Javamail连接到Gmail smtp服务器忽略指定的端口并尝试使用25

和Axel评论的是先尝试使用命令行

您是否在本地主机上运行电子邮件服务器? 如果是,是否禁用了身份validation?

也许您可以在其日志中看到错误消息。

原因是,您使用localhost作为smtp主机,在将localhost用作发件人之前,应在计算机上使用部署邮件服务器。 即便如此,您可能还需要注册您的服务器。

你也可以使用gmail或yahoo邮件。 使用谷歌邮件的smtp主机。 使用您的信用卡进行身份validation,然后继续。

试试这个链接:

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

通常,您可以使用JavaMail使用servlet发送邮件。 您声明您正在使用AppEngine( 为什么我不能从我的servlet发送电子邮件并获取java.security.AccessControlException? )。 Google App Engine允许您使用JavaMail发送电子邮件,但您不能使用appengine提供的JavaMail连接到任何邮件服务器。添加到传输或会话的MAC地址配置将被忽略。 https://developers.google.com/appengine/docs/java/mail/usingjavamail#JavaMail_Features_Not_Supported