как мне отправить почту в gwt? - PullRequest
1 голос
/ 15 марта 2011

У меня следующий код запускается на сервере через gwt rpc:


Properties props = new Properties();</p> <pre><code> 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: невозможно найти провайдера для протокола: smtp


как мне это исправить?

Ответы [ 3 ]

1 голос
/ 15 марта 2011

GWT Java-код компилируется в Javascript и запускается в вашем браузере.Не все классы Java доступны на стороне клиента.Есть хорошая запись об этом здесь .Вместо этого вам следует рассмотреть возможность вызова GWT RPC на ваш сервер, где вы можете запустить свой код для генерации электронной почты.

Вот пример использования GWT RPC: http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

0 голосов
/ 24 марта 2011

Не видя сигнатуру метода, я предполагаю, что ваша сигнатура метода вызывает исключение 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);
   }
}
0 голосов
/ 17 марта 2011

Вы, похоже, возвращаете NoSuchProviderException обратно на клиентскую сторону, и это не работает.Это происходит где-то за пределами этого фрагмента кода.

Исходная проблема (исключение NoSuchProviderException) заключается в том, что опечатка в первой строке свойства.Протокол называется 'smtp' , а не 'smpt' .

Если проблемы все еще возникают.Убедитесь, что у вас есть правильные версии почтовых jar-файлов и jar-файлов активации в вашем classpath-сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...