我在我的应用程序中编写了以下代码
public void send_email(String email)
{
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.sendgrid.net");
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("my_username","my_password");
}
});
Message message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress("from@no-spam.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("ramesh@abc.com"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler," +
"\n\n No spam to my email, please!");
Transport.send(message);
System.out.println("Done");
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是在我的servlet类中调用的方法。
之后它执行得很好,并在控制台上显示“Done
”,但我没有收到电子邮件收件箱中的任何电子邮件。
如果我运行与java应用程序相同的代码,它可以正常工作并收到一封电子邮件。
但是当我在谷歌网络服务器上运行它时,它无法工作.. 有一件事,我在这里从lib中删除了javaee.jar文件和mail.jar文件,但它仍然没有给出任何错误..
给我任何建议......
答案 0 :(得分:1)
但是当我在谷歌网络服务器上运行它时它不起作用..
“Google网络服务器”在您的情况下意味着Google AppEngine?如果是这样,那么您不能使用完整的JavaMail API,但必须use Google's infrastructure。
应用无法使用JavaMail界面连接到其他邮件 用于发送或接收电子邮件的服务。 SMTP配置 添加到传输或会话被忽略。
答案 1 :(得分:0)
请注意,您无法从任何电子邮件地址发送电子邮件。您需要使用在您应用的域中授权的一个。
发件人的电子邮件地址,发件人地址。发件人地址必须是以下类型之一:
应用程序的注册管理员的地址。您可以 使用管理控制台将管理员添加到应用程序。
使用a登录的当前请求的用户地址 Google帐户。您可以确定当前用户的电子邮件地址 使用用户API。用户的帐户必须是Gmail帐户,或者是 在由Google Apps管理的域上。
任何有效的电子邮件接收地址 对于应用程序(例如xxx@APP-ID.appspotmail.com)。
任何有效的电子邮件 接收域帐户的地址,例如support@example.com。 域帐户是Google域外的帐户,带有电子邮件 地址不以@ gmail.com或@ APP-ID.appspotmail.com结尾。
https://developers.google.com/appengine/docs/python/mail/sendingmail