【问题标题】:how do I send mail in gwt?如何在 gwt 中发送邮件?
【发布时间】:2011-07-15 14:31:43
【问题描述】:

我在服务器上通过 gwt rpc 运行以下代码:


Properties props = new Properties();

    props.setProperty("mail.transport.protocol", "smpt");
    props.setProperty("mail.smtp.port", "25");
    props.setProperty("mail.host", "smtp.random.com");
    props.setProperty("mail.user", "user@random.com");
    props.setProperty("mail.password", "passwd");

    Session mailSession = Session.getDefaultInstance(props, null);
    Transport transport = mailSession.getTransport();

    MimeMessage message = new MimeMessage(mailSession);
    message.setSubject(subject);
    message.setContent(mailMessage, "text/plain");
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(adress));

    transport.connect();
    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    transport.close();

但我得到了错误:
com.google.gwt.user.client.rpc.SerializationException:类型“javax.mail.NoSuchProviderException”未包含在可由此 SerializationPolicy 序列化的类型集中,或者无法加载其 Class 对象。出于安全考虑,此类型不会被序列化。: instance = javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp


我该如何解决?

【问题讨论】:

  • 没有从上面的代码中得到整个故事。方法签名是什么?
  • 你把这个排序了吗?

标签: java email gwt


【解决方案1】:

没有看到方法签名我的猜测是你的方法签名抛出了 NoSuchProviderException

修复:

public void sendMail(...) throws Exception{
  try{
    // mail code here...


  } catch(NoSuchProviderException e){
    throw new Exception(e);
  }
}

或创建您的异常类并使用它们:

public class MailException extends Exception{
   public MailException(){}
   public MailException(String msg){
     super(msg);
   }
}

【讨论】:

    【解决方案2】:

    您似乎正在将 NoSuchProviderException 返回到客户端,但这不起作用。它发生在这段代码 sn-p 之外的某个地方。

    最初的问题(抛出 NoSuchProviderException)是第一个属性行上的错字。该协议称为 'smtp' 而不是 'smpt'。

    如果您仍然遇到问题。检查您的服务器类路径中是否有正确版本的邮件 jar 和激活 jar。

    【讨论】:

      【解决方案3】:

      GWT Java 代码被编译为 Javascript 并在您的浏览器中运行。并非所有 Java 类都在客户端可用。关于这个here 有一篇很好的文章。相反,您应该考虑对您的服务器进行 GWT RPC 调用,您可以在其中运行代码以生成电子邮件。

      这是一个如何使用 GWT RPC 的示例:http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

      【讨论】:

      • 他的第一句话:“我在服务器上通过 gwt rpc 运行了以下代码”
      • 他编辑了问题以添加“通过 gwt rpc 在服务器上运行”文本:stackoverflow.com/posts/5308999/revisions - 我同意我的回答不适用于这种情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2011-05-25
      • 2011-05-30
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多