我正在尝试从我的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)
任何人都可以告诉我为什么我没有收到电子邮件,这个代码有什么问题。 提前致谢
答案 0 :(得分:0)
props.put("mail.smtp.host","localhost");
在您的系统上运行邮件服务器之前,它不应该是 localhost 。
看看这个问题: Using Javamail to connect to Gmail smtp server ignores specified port and tries to use 25
和是,正如Axel所述,首先尝试使用命令行
答案 1 :(得分:0)
您是否在本地主机上运行电子邮件服务器?如果是,是否禁用了身份验证?
也许您可以在其日志中看到错误消息。
答案 2 :(得分:0)
原因是,您使用localhost作为smtp主机,在将localhost用作发件人之前,应在计算机上使用部署邮件服务器。即便如此,您可能需要注册您的服务器。
你也可以使用gmail或yahoo邮件。使用谷歌邮件的smtp主机。使用您的信用卡进行身份验证,然后继续。
试试这个链接:
http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/
答案 3 :(得分:0)
通常,您可以使用JavaMail使用servlet发送邮件。您声明您正在使用AppEngine(Why can't i send email from my servlet and getting java.security.AccessControlException?)。 Google App Engine允许您使用JavaMail发送电子邮件,但您不能使用appengine提供的JavaMail连接到任何邮件服务器。添加到传输或会话的MAC地址配置将被忽略。 https://developers.google.com/appengine/docs/java/mail/usingjavamail#JavaMail_Features_Not_Supported
答案 4 :(得分:0)
阅读https://developers.google.com/appengine/docs/java/mail/overview 基本上停止在您的应用程序中包含任何JavaMail库,并且不要尝试连接到主机。构建消息并直接跳转到Transport.send(msg);