在 googel 应用引擎中,如果我们不使用 OpenID 登录,我们可以发送邮件,就像它用 API 编写的一样
但我使用 OpenId 登录(使用谷歌邮件),我不能使用它。
但我会做这样的事情L
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"mail@gmail.com", "pass");
}
});
**Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("mail"));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("mail"));
message.setSubject("Testing Subject");
message.setText(msgBody);
Transport.send(message);
如果我登录然后调用那个 SERVLET,例如 www.example.appspot.com/mail 它就可以了! 但如果我没有登录,它就不起作用! 但我不明白会发生什么?!**
java.lang.RuntimeException: javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Illegal Arguments (java.lang.IllegalArgumentException: Unauthorized Sender: Unauthorized sender))
at test.queue.MailServlet.sendMail(MailServlet.java:208)
在这 208 行我有这个:
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("example@gmail.com","pass");
}