VRaptor - Problema no envio de email

20 respostas
andreharry

Pessoal,

estou com um problema que está difícil de resolver. Tenho uma classe de envio de email com commons-mail, e ao tentar enviar um email da o seguinte erro:

Caused by: com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'mail' or call 'Send()' was not found.
	at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:98)
	at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:50)
	at com.google.appengine.api.mail.MailServiceImpl.doSend(MailServiceImpl.java:95)
	at com.google.appengine.api.mail.MailServiceImpl.send(MailServiceImpl.java:32)
	at com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage(GMTransport.java:247)
	at javax.mail.Transport.send(Transport.java:95)
	at javax.mail.Transport.send(Transport.java:48)
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
	... 90 more

Andei pesquisando e parece que e algum conflito com as bibliotecas do google app eginne. Porém, eu baixei um projeto em branco do vraptor sem o app egine no site do vraptor, e deu esse problema.

Alguém ae já passou por isso?

Att.

André Pereira

20 Respostas

Lucas_Cavalcanti

Pq vc não usa o serviço do google pra enviar emails? acho que a idéia é essa se vc está no GAE.

andreharry

O problema é que não estou no GAE. Até criei um outro tópico peruntando como tira as configurações do GAE do meu projeto.
http://guj.com.br/java/269262-vraptor---desativar-configuracoes-google--app-egine

Porém configurei um outro projeto do zero(na verdade baixei o projeto em branco do vraptor sem o GAE", sem o GAE e mesmo assim continua dando o erro.

Lucas_Cavalcanti

mas se tá sem o gae, pq aparecem as bibliotecas do gae na stacktrace? vc tah rodando pelo plugin do gae no eclipse?

andreharry

estou rodando pelo plugin do gae. É isso que não estou entendendo. Só pode ter algo que não tirei. Para configurar o Gae o que precisa colocar no projeto?

Lucas_Cavalcanti

se não é uma app do GAE, não use o plugin do gae! sua a aplicação num tomcat da vida mesmo, adicionando ela no servidor e subindo ele.

andreharry

putz! faltou um não no começo da minha resposta rs “não estou rodando pelo plugin do GAE…” rs
Estou rodando no tomcat7.

Lucas_Cavalcanti

mas ainda está aparecendo esses pacotes:

at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:98)  
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:50)  
    at com.google.appengine.api.mail.MailServiceImpl.doSend(MailServiceImpl.java:95)  
    at com.google.appengine.api.mail.MailServiceImpl.send(MailServiceImpl.java:32)  
    at com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage(GMTransport.java:247)

se não, posta aí o código que vc está usando pra enviar emails, pode ser que falte alguma configuração antes de dar o send.

andreharry

procurei no meu workspace e não encontra nenhum jar com essas classes.

O meu código de envio de email está correto, tanto que está enviando corretamente se eu colocar um main na classe e rodar a aplicação fora do tomcat.

segue o código de envio de email…

Properties emailProps = new Properties();
		emailProps.setProperty("mail.host", "smtp.gmail.com");
		emailProps.put("mail.smtp.port", "465");
		emailProps.setProperty("mail.debug", "true");
		emailProps.put("mail.smtp.auth", "true");
		emailProps.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		emailProps.put("mail.smtp.socketFactory.fallback", "false");
		

		Authenticator autenticador = new Authenticator() {
	          protected PasswordAuthentication getPasswordAuthentication() {
	              return new PasswordAuthentication(Util.obterPropertiesDeConfiguracoes().getString("conf.email.usuario"), Util.obterPropertiesDeConfiguracoes().getString("conf.email.senha"));
	          }
	      };
	      Session session = Session.getInstance(emailProps,autenticador);
	      Message msg = new MimeMessage(session);
		
		try {
			msg.setSubject(assunto);
			msg.setSentDate(new Date());
			msg.setFrom(InternetAddress.parse(emailRemetente)[0]);
			msg.setRecipient(Message.RecipientType.TO,
			InternetAddress.parse(emailDestinatario, false)[0]);
			msg.setText("teste");
			Transport.send(msg);
		} catch (MessagingException e) {
			e.printStackTrace();
		}
Lucas_Cavalcanti

o certo não seria criar um new Email e setar as coisas nele?

andreharry

Assim?

try {
			SimpleEmail email = new SimpleEmail();
	
			email.setHostName("smtp.gmail.com"); 
			email.setSmtpPort(465);
			email.setAuthentication("user", "senha");
			email.addTo("[email removido]", "Andre"); 
			email.setFrom("[email removido]", "Andre");
			email.setSubject("Mensagem de Teste");
			email.setMsg("Teste de Email utilizando commons-email"); 
			email.send();
		
		} catch (EmailException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

já tentei também e nao funfa.

Lucas_Cavalcanti

qual é exatamente o erro que está dando?

se vai usar o vraptor dá pra usar esse cara:

ou se inspirar no cara que envia o email de fato:

ele pega um email com o to, from, subject e o conteúdo já setados e seta o resto

andreharry

onde consigo essa biblioteca sem ser pelo mavem? Vraptor-simplemail.jar

Lucas_Cavalcanti

http://repo1.maven.org/maven2/br/com/caelum/vraptor/vraptor-simplemail/1.0.3/vraptor-simplemail-1.0.3.jar

andreharry

br.com.caelum.vraptor.environment.Environment

essa classe não deveria estar dentro desse jar? ou é em algum jar separado?

andreharry

Achei a biblioteca aqui. vou testar aqui e te falo se deu certo. valeu

Lucas_Cavalcanti

http://repo1.maven.org/maven2/br/com/caelum/vraptor/vraptor-environment/1.0.1/vraptor-environment-1.0.1.jar

depende desse outro projeto.

pra usar essas libs vc precisa criar um arquivo chamado development.properties com os dados de conf do email
(e um respectivo production.properties com as confs de produção)

M

Lucas Cavalcanti:
http://repo1.maven.org/maven2/br/com/caelum/vraptor/vraptor-environment/1.0.1/vraptor-environment-1.0.1.jar

depende desse outro projeto.

pra usar essas libs vc precisa criar um arquivo chamado development.properties com os dados de conf do email
(e um respectivo production.properties com as confs de produção)

Lucas você poderia mim ajudar, não estou conseguindo enviar e-mail com o vraptor-simplemail, estou usando um projeto web, e tentando enviar com o metodo mailer.send() pelo AsyncSend, meu arquivo esta na pasta src/main/resoureces/development.properties, preciso fazer alguma modificação no Web.xml ?

Lucas_Cavalcanti

se vc está num ambiente servlet 2.5 (tipo o tomcat 6) vc precisa cadastrar o pacote do simple-mail na configuração de packages do vraptor.

M

Obrigado Lucas pela rápida reposta,estou usando o tomcat 7,onde coloco esse arquivo? acabei de assinar o Caelum on-line e estou estudando a fundo o vraptor, queremos usá-lo em larga escala la na empresa.

Lucas_Cavalcanti

verifica se o seu web.xml tá com a versão 3.0 do servlet

se não tiver, mude e tente de novo…

se já estiver tente registrar o pacote no web.xml:

<context-param>
   <param-name>br.com.caelum.vraptor.packages</param-name>
   <param-value>br.com.caelum.vraptor.simplemail</param-value>
</context-param>

se a conf de packages já existir, acrescente o pacote a ela, separado por vírgula

Criado 6 de abril de 2012
Ultima resposta 25 de dez. de 2012
Respostas 20
Participantes 3