-1

我正在尝试从我的 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)

谁能告诉我为什么我没有收到电子邮件以及这段代码有什么问题。提前致谢

4

5 回答 5

0

似乎错误是:

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

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

看这个问题: Using Javamail to connect to Gmail smtp server ignores specified port and try to use 25

是的,正如 Axel 评论的那样,首先尝试使用命令行

于 2012-07-26T13:20:57.443 回答
0

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

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

于 2012-07-26T13:23:22.583 回答
0

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

你也可以使用 gmail 或 yahoo 邮件来做到这一点。使用谷歌邮件的 smtp 主机。使用您的信用进行身份验证,然后继续。

试试这个链接:

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

于 2012-07-26T13:27:59.360 回答
0

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

于 2012-07-26T17:13:40.950 回答
0

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

于 2012-07-27T02:30:01.963 回答