0

在我的应用程序中编写如下代码

 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 文件,但它仍然没有给出任何错误..

各位大侠给点建议吧。。。。

4

2 回答 2

1

但是当我在谷歌网络服务器上运行它时它不起作用..

在您的情况下,“Google Web 服务器”是指 Google AppEngine?如果是这样,那么您不能使用完整的 JavaMail API,而必须使用 Google 的基础架构

应用程序不能使用 JavaMail 接口连接到其他邮件服务以发送或接收电子邮件。添加到传输或会话的 SMTP 配置被忽略。

于 2013-04-27T12:05:15.703 回答
0

请注意,您不能只从任何电子邮件地址发送电子邮件。您需要使用在您的应用程序域中获得授权的一种。

发件人的电子邮件地址,发件人地址。发件人地址必须是以下类型之一:

  • 应用程序的注册管理员的地址。您可以使用管理控制台将管理员添加到应用程序。

  • 使用 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

于 2013-05-11T14:09:29.083 回答