【问题标题】:How to Send Emails in GWT Application如何在 GWT 应用程序中发送电子邮件
【发布时间】:2012-05-09 10:44:18
【问题描述】:

我正在使用此代码在我的 java 应用程序中发送电子邮件

        try{
            Email email = new SimpleEmail();
            email.setHostName("smtp.googlemail.com");
            email.setSmtpPort(587);
            email.setAuthenticator(new DefaultAuthenticator("me@gmail.com", "mypwd"));
            email.setTLS(true);

                email.setFrom("me@gmail.com");

            email.setSubject("TestMail");
            email.setMsg("This is a test mail ... :-)");
            email.addTo("me@hotmail.com");
            email.send();
            System.out.println("Mail sent!");
            } catch (EmailException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

它运行良好,我在收件箱中收到电子邮件,但是当我将相同的代码放在我的 GWT(Appengine 项目)服务器端时, 它不会工作 它显示 No Errors ,没有异常,并说 mail sent ,但它从未真正发送到我的收件箱。

这个也试过了

       try {
                Message msg = new MimeMessage(session);
                msg.setFrom(new InternetAddress("appname@appspot.gserviceaccount.com", "Example.com Admin"));
                msg.addRecipient(Message.RecipientType.TO,
                                 new InternetAddress("myemail@gmail.com", "Mr. User"));
                msg.setSubject("Your Example.com account has been activated");
                msg.setText(msgBody);
                Transport.send(msg);

            } catch (AddressException e) {
                // ...
            } catch (MessagingException e) {
                // ...
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

请指导我

谢谢

【问题讨论】:

    标签: java google-app-engine email gwt


    【解决方案1】:

    看看这个:Mail Go API Overview

    而且您没有收到错误,因为没有错误。
    邮件已发送,但由于上述限制,您不会收到。

    【讨论】:

      【解决方案2】:

      这是developers.google.com引用的工作代码

      public String sendMail(String from, String to, String replyTo, String subject, String message) {
              String output=null;
              Properties props = new Properties();
              Session session = Session.getDefaultInstance(props, null);
      
              try {
                  Message msg = new MimeMessage(session);
                  msg.setFrom(new InternetAddress(from, "Gmail.com Admin"));
                  msg.addRecipient(Message.RecipientType.TO,
                                   new InternetAddress(to, "Mr. User"));
                  msg.setSubject(subject);
                  msg.setText(message);
                  msg.setReplyTo(new InternetAddress[]{new InternetAddress(replyTo)});
                  Transport.send(msg);
      
              } catch (Exception e) {
                  output=e.toString();                
              }   
              return output;
          }
      

      通过developers.google.com的引用,发件人地址(from)必须是以下类型之一:

      • 应用程序注册管理员的地址

      • 使用 Google 帐户登录的当前请求的用户地址。您可以使用用户 API 确定当前用户的电子邮件地址。用户的帐户必须是 Gmail 帐户,或者位于由 Google Apps 管理的域中。

      • 应用程序的任何有效电子邮件接收地址(例如 xxx@APP-ID.appspotmail.com)。

        我试过了,它可以在托管的 gwt 应用程序中运行。

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 嗨,谢谢,我试过了,但我的收件箱里没有收到任何电子邮件,编辑了我的问题,如果我做错了什么请调查一下
        • 您是否也检查过:developers.google.com/appengine/docs/java/mail/usingjavamail#Senders_and_Recipients 并检查过您邮件帐户的垃圾邮件文件夹?
        • 是的,我做到了,但我只能输入像:xxx@APP-ID.appspotmail.com 这样的地址,因为我不知道我的这个地址,我怎样才能获得这个地址
        【解决方案4】:

        您是否收到了 AddressException 并吞下它而不显示错误?

        我问是因为这是一个不受支持的“发件人”地址:

        appname@appspot.gserviceaccount.com
        

        应该是:

        anything@appid.appspotmail.com
        

        或管理员或登录用户的电子邮件地址。请参阅此处的规则:

        https://developers.google.com/appengine/docs/java/mail/usingjavamail#Senders_and_Recipients

        【讨论】:

          【解决方案5】:

          同样的问题,这对我有用,100% 也对你有用(如果你使用的是 eclipse)。

          当您发送邮件时,但实际上它是发送到您的本地主机服务器的。所以你必须从应用引擎管理控制台创建你的个人应用引擎。

          为此,请转到此Link,然后选择您要用于制作应用程序引擎的帐户,创建应用程序,而不是编写应用程序标识符(请注意此应用程序标识符,之后在您的 eclipse 项目中工作,而部署)

          然后在应用程序设置中,找到这个Configured Services,因为你必须为你的应用程序授予权限,选择你的应用程序语言Java/Python/Go,之后你将被重定向到inbound-services你必须写在你的 web.xml 中

          从 Eclipse 之后,右键单击您的项目,转到 Google -> Deploy to app Engine,然后在之前记下的 Application ID 字段中写入 Application ID。首先检查您必须安装应用引擎。

          然后单击完成。部署需要一些时间,它会自动打开您的浏览器。所以现在你的 gwt 应用程序在你的服务器上。享受:)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-13
            • 2010-12-20
            • 2014-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多