RESOLVIDO! Envio de email automatico respeitando validações. Como fazer?

Gostaria de programar um envio de email automatico quando, por exemplo, quando um contrato esta para vencer e precisa renovar… Segundo as tecnologias que vou informar abaixo, como vcs me indicam a fazer isso??? Pesquisando um pouco encontrei u m tal de QUARTZ… to no caminho certo???

Tecnologias

Eclipse Vraptor Hibernate JSP e muita quebração de cabeça oO´

ahhhh … … se tiverem um exemplo que eu possa baixar ou algo do tipo melhor ainda!! … senão só me deem as direções e eu me viro nas pesquisas…

thanks

Como enviar email com java
vRaptor
Hibernate
Quartz
Acho que isso resolve.

Cara, tem esse projetinho do wpivotto que ajuda bastante…

https://github.com/wpivotto/vraptor-tasks

Ele usa o quartz por baixo dos panos, mas oferece uma interface agradável junto com o VRaptor…

Está no caminho certo sim… Eu faria algo assim: a rotina roda a cada X minutos verificando se existe algum dado nessas condições e dispara o e-mail…

Vlw galera! desculpem a demora no retorno, mas depois que postei a duvida tive outras prioridades pra resolver… vou voltar a ver isso agora!! obrigado pelas respostas até agora! volto aqui pra postar o resultado …

[quote=Rafael Guerreiro]Cara, tem esse projetinho do wpivotto que ajuda bastante…

https://github.com/wpivotto/vraptor-tasks

Ele usa o quartz por baixo dos panos, mas oferece uma interface agradável junto com o VRaptor…

Está no caminho certo sim… Eu faria algo assim: a rotina roda a cada X minutos verificando se existe algum dado nessas condições e dispara o e-mail…[/quote]

Maninho… vou hospedar o site que estou fazendo no Hostinger " http://www.hostinger.com.br/ " (aceito dicas de outro gratuito). Como NUNCA fiz algo relacionado com essa parade de email, me surge outra questão: Qual email será o remetente, ou como funciona o relacionemento ou “dependencias” para que e o email seja enviado??

Gostei da sua dica e vou atacar e apostar minhas fichas nela! Sem duvida terei algumas dificuldades para implementar no meu projeto, mas dou um jeito…
Qquer dica que facilite meu trajeto, será de grande ajuda!

Desde ja agradeço muito a dica!!

[quote=Rafael Guerreiro]Cara, tem esse projetinho do wpivotto que ajuda bastante…

https://github.com/wpivotto/vraptor-tasks

Ele usa o quartz por baixo dos panos, mas oferece uma interface agradável junto com o VRaptor…

Está no caminho certo sim… Eu faria algo assim: a rotina roda a cada X minutos verificando se existe algum dado nessas condições e dispara o e-mail…[/quote]

Oh, baixei o projeto do wpivotto, e gostaria dumas dicas de como inclui-lo no meu projeto? Tipo, arquivos como o .classpath ou os arquivos dentro da pasta .settings ja existem em meu projeto… devo mesclar os dois em um unico arquivo?

antes de gerar um jar e importar no meu projeto original, eu:
1- criei no eclipse um webproject;
2- Copiei o conteudo da pasta que baixei no site e colei nesse projeto
3- tentei verificar se tudo estava certo, mas tem um monte de erros (um monte mesmo). Não digo erro de codificação, mas em questão de imports eu acho… devo ter feito da forma errada.

**depois que eu visse que tava tudo certinho eu iria gerar um JAR e importar para dentro do meu outro projeto… porém, travei no passo anterior… Ainda to aprendendo muita coisa, em java sou novato… tentei fazer da forma que tinha conhecimento…

Any helps???

Ixi cara, você me confundiu todo…

Vamos lá, primeiro: por que você quer criar um jar para depois importar no seu projeto? Faça no seu projeto.

Segundo: que conteúdo da pasta? Você baixou os códigos fontes? Não precisa fazer isso, você está usando Maven?

Terceiro, não precisa mexer nos .settings da vida, pegue somente os jars já compilados no projeto do wpivotto e coloque na sua pasta LIB…

Quarto: sobre os emails, procure sobre a biblioteca commons mail da Apache. Você vai precisar vincular o envio dos emails com um servidor (pode usar o do gmail, vc cria uma conta, e usa o java para mandar emails através dessa conta)…

Vê se isso ajuda… Me explica melhor o que você fez.

[quote=Rafael Guerreiro]Ixi cara, você me confundiu todo…

Vamos lá, primeiro: por que você quer criar um jar para depois importar no seu projeto? Faça no seu projeto.

Segundo: que conteúdo da pasta? Você baixou os códigos fontes? Não precisa fazer isso, você está usando Maven?

Terceiro, não precisa mexer nos .settings da vida, pegue somente os jars já compilados no projeto do wpivotto e coloque na sua pasta LIB…

Quarto: sobre os emails, procure sobre a biblioteca commons mail da Apache. Você vai precisar vincular o envio dos emails com um servidor (pode usar o do gmail, vc cria uma conta, e usa o java para mandar emails através dessa conta)…

Vê se isso ajuda… Me explica melhor o que você fez.[/quote]

Primeiro: Foi uma tentativa de incluir o projeto dele no meu projeto… eu não sei como fazer isso, principalmente que o projeto dele não tem jars…

Segundo: desculpe minha falta de conhecimento gerou essa confusão… E não, não estou usando Maven…

Terceiro: No arquivo que baixei do site, não tem JARS… tem algumas pastas com alguns arquivos .java… se vc se refere a estes arquivos ok, vou inclui-los no meu projeto…

  • e repito, não tem jars! rsrs…

Quarto: Maravilha, essa vou fazer pelo google msmo… é um proximo passo que vou atras… antes vou incluir esse projeto do wpivotto no meu projeto, entende-lo e tentar fazer funcionar…
De qquer forma ja me clareou bastante saber esse detalhe do google!!! vlw msmo!..

Se puder e quiser me ajudar, o que estou tentando fazer agora é exatamente isso… pegar o projeto que baixei no site mencionado e inclui-lo no meu projeto… dpois tentarei testar… dicas de como importar e como testar será bem vinda…)

*meu objetivo final é: diariamente e de forma automatica o sistema varre uma determinada tabela em busca de uma lista de ligações a fazer durante o dia. Encontrando algum registro manda automaticamente um email com essa lista ou um email informando nao ter ligações para o dia…

**Minha proxima tentativa:
Pegar apenas o conteudo da pasta “…\vraptor-tasks-master\src\main\java\br\com\caelum\vraptor\tasks” e colocar em meu projeto… e tentar entender e fazer funcionar e testar…

***Se achar muita folga minha ou o nível das perguntas estiver muito ruim pode deixar que vou pesquisar bastante por aqui pra fazer essa parada andar…

Leia isso e você encontrará os jars :wink:
https://github.com/wpivotto/vraptor-tasks#tasks

Dai é só você baixar e colocar na pasta LIB…

[quote=Rafael Guerreiro]Leia isso e você encontrará os jars :wink:
https://github.com/wpivotto/vraptor-tasks#tasks

Dai é só você baixar e colocar na pasta LIB…[/quote]

Tu sem dúvida é ou será um cara de sucesso!! Obrigado pela enorme paciência!
Encontrei o jar, e ja apliquei no meu projeto… agora vou estudar um pouquinho para aprender a usar… muito obrigado por enquanto!!!

É só terminar de ler aquele README que ele explica como usar… Basicamente, você cria um component que vai tem uma annotation do Task aonde vc passa uma string no formato de Cron…

LEIA até o fim please!!!

Mano… sei que é simples… mas ta complicado! rsrs … .caminho um pouco e ja tropeço denovo…

Bom, a que se refere exatamente o tal do MAILER aqui: https://github.com/wpivotto/vraptor-tasks#defining-a-task ???

é a unica coisa que continua a reclamar na minha tentativa de testes… Enfim, mesmo que vc me responda essa pergunta, ainda não sei aonda eu vou encaixar e como vou montar minha lógica. Por isso resolvi montar esse "exemplo" e tentar tirar algumas duvidas:

[code]package br.com.ajm.scdri.email;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.tasks.Task;
import br.com.caelum.vraptor.tasks.scheduler.Scheduled;

@ApplicationScoped
@Scheduled(fixedRate = 5)
/* Suponho que esse @Scheduled fixrate seja o intervalo de execução certo??? seria em segundos??? */
public class Email implements Task {

@Override
public void execute() {

	try {
		enviaEmailSimples();
	} catch (EmailException e) {
		e.printStackTrace();
	}

}

/*
 * envia email simples(somente texto)
 */
@SuppressWarnings("deprecation")
public void enviaEmailSimples() throws EmailException {

	SimpleEmail email = new SimpleEmail();
	email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do
											// e-mail
	email.addTo("teste@gmail.com", "Guilherme"); // destinatário
	email.setFrom("teste@gmail.com", "Eu"); // remetente
	email.setSubject("Teste -> Email simples"); // assunto do e-mail
	email.setMsg("Teste de Email utilizando commons-email"); // conteudo do
																// e-mail
	email.setAuthentication("teste", "xxxxx");
	email.setSmtpPort(465);
	email.setSSL(true);
	email.setTLS(true);
	email.send();
}

}
[/code]

é isso??? dicas por favor…
to perto???
tomara que seja só isso… ou pelo menos qse isso… oO´ …

Esse mailer que ele usa é igual o commons mail que vc está usando…

Você está no caminho certo sim.

Sim, esse fixed rate está em segundos…

A sua lógica já está pronta, a cada 5 segundos esse método será invocado e o email será disparado… Só tome cuidado pq o envio de email pode demorar um pouco e, por isso, acabar atropelando as coisas…

Então, use a propriedade concurrent = false…

[quote=Rafael Guerreiro]Esse mailer que ele usa é igual o commons mail que vc está usando…

Você está no caminho certo sim.

Sim, esse fixed rate está em segundos…

A sua lógica já está pronta, a cada 5 segundos esse método será invocado e o email será disparado… Só tome cuidado pq o envio de email pode demorar um pouco e, por isso, acabar atropelando as coisas…

Então, use a propriedade concurrent = false…[/quote]

Bom… de volta a luta…

O que me diz? (apenas tentei startar o server TOMCAT)

[code]Mai 17, 2013 4:02:04 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\PC Connectivity Solution;c:\Program Files (x86)\Intel\iCLS Client;c:\Program Files\Intel\iCLS Client;c:\Program Files (x86)\AMD APP\bin\x86_64;c:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;c:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\Intel® Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel® Management Engine Components\IPT;C:\Program Files (x86)\Windows Live\Shared;.
Mai 17, 2013 4:02:04 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:scdri’ did not find a matching property.
Mai 17, 2013 4:02:04 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-bio-8080”]
Mai 17, 2013 4:02:04 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“ajp-bio-8009”]
Mai 17, 2013 4:02:04 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1223 ms
Mai 17, 2013 4:02:04 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Mai 17, 2013 4:02:04 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.37
16:02:08,510 INFO [BasicConfiguration ] Using class br.com.caelum.vraptor.ioc.spring.SpringProvider as Container Provider
16:02:08,543 INFO [DefaultSpringLocator] No application context found
16:02:08,648 INFO [BasicConfiguration ] br.com.caelum.vraptor.scanning = null
16:02:08,648 INFO [WebAppBootstrapFactory] Dynamic WebAppBootstrap found.
Mai 17, 2013 4:02:09 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter vraptor
java.lang.NoClassDefFoundError: org/quartz/Job
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at br.com.caelum.vraptor.scan.DynamicWebAppBootstrap.configure(DynamicWebAppBootstrap.java:45)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:84)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.quartz.Job
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
… 19 more

Mai 17, 2013 4:02:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Mai 17, 2013 4:02:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/scdri] startup failed due to previous errors
Mai 17, 2013 4:02:09 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-bio-8080”]
Mai 17, 2013 4:02:09 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-bio-8009”]
Mai 17, 2013 4:02:09 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4302 ms[/code]

Detalhe: Depois que importei os jars referente a essas coisas de email e tal, parou de startar o servidor! Sei disso pois eliminei essa classe mencionada acima, e ele continuou não ‘startando’…

Quando isso java.lang.NoClassDefFoundError: acontece, é por que você esqueceu algum jar…

Nesse caso: java.lang.NoClassDefFoundError: org/quartz/Job está faltando o Jar do quartz… Olhe naquele readme se você pegou o jar do quartz…

[quote=andersonjm]

Bom… de volta a luta…

O que me diz? (apenas tentei startar o server TOMCAT)

Mai 17, 2013 4:02:04 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\PC Connectivity Solution\;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;c:\Program Files (x86)\AMD APP\bin\x86_64;c:\Program Files (x86)\AMD ....... INFO: Server startup in 4302 ms

Detalhe: Depois que importei os jars referente a essas coisas de email e tal, parou de startar o servidor! Sei disso pois eliminei essa classe mencionada acima, e ele continuou não ‘startando’…[/quote]

Solucionei essa parada incluindo um jar do próprio QUARTZ no meu LIB
quartz-all-2.1.7.jar

O server startou, mas deu outro erro agora…
Vou tentar identificar e corrigir o erro… se não conseguir volto aqui…

[quote=Rafael Guerreiro]Quando isso java.lang.NoClassDefFoundError: acontece, é por que você esqueceu algum jar…

Nesse caso: java.lang.NoClassDefFoundError: org/quartz/Job está faltando o Jar do quartz… Olhe naquele readme se você pegou o jar do quartz…[/quote]

Vc tem razão… coloquei um jar do quartz como mencionado acima e pelo menos startou e funcionou tudo que funcionava antes…
Mas agora de uma forma contínua e repetitiva, esta retornando isso no console:

Caused by: java.lang.NoClassDefFoundError: javax/mail/Authenticator at br.com.ajm.scdri.email.Email.enviaEmailSimples(Email.java:31) at br.com.ajm.scdri.email.Email.execute(Email.java:18) at br.com.caelum.vraptor.tasks.jobs.simple.StatefulJobWrapper.execute(StatefulJobWrapper.java:24) at org.quartz.core.JobRunShell.run(JobRunShell.java:213) ... 1 more Caused by: java.lang.ClassNotFoundException: javax.mail.Authenticator at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558) ... 5 more 16:43:33,000 ERROR [TaskLogger ] TaskEmail was failed org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NoClassDefFoundError: javax/mail/Authenticator] at org.quartz.core.JobRunShell.run(JobRunShell.java:224) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) Caused by: java.lang.NoClassDefFoundError: javax/mail/Authenticator at br.com.ajm.scdri.email.Email.enviaEmailSimples(Email.java:31) at br.com.ajm.scdri.email.Email.execute(Email.java:18) at br.com.caelum.vraptor.tasks.jobs.simple.StatefulJobWrapper.execute(StatefulJobWrapper.java:24) at org.quartz.core.JobRunShell.run(JobRunShell.java:213) ... 1 more Caused by: java.lang.ClassNotFoundException: javax.mail.Authenticator at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558) ... 5 more 16:43:33,021 ERROR [TaskLogger ] TaskEmail was failed org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NoClassDefFoundError: javax/mail/Authenticator] at org.quartz.core.JobRunShell.run(JobRunShell.java:224) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) Caused by: java.lang.NoClassDefFoundError: javax/mail/Authenticator at br.com.ajm.scdri.email.Email.enviaEmailSimples(Email.java:31) at br.com.ajm.scdri.email.Email.execute(Email.java:18) at br.com.caelum.vraptor.tasks.jobs.simple.StatefulJobWrapper.execute(StatefulJobWrapper.java:24) at org.quartz.core.JobRunShell.run(JobRunShell.java:213) ... 1 more .......

sinto que to chegando no objetivo…
quanto a isso, alguma dica??

Então, as exceptions existem para que a gente leia e compreenda o que está acontecendo…

Eu sei que elas são grandes e assustam, mas é preciso ler!

De acordo com o que eu falei na mensagem anterior, me conte o que está acontecendo…

[quote=Rafael Guerreiro]Então, as exceptions existem para que a gente leia e compreenda o que está acontecendo…

Eu sei que elas são grandes e assustam, mas é preciso ler!

De acordo com o que eu falei na mensagem anterior, me conte o que está acontecendo…[/quote]

Essa nem tão grande é… apenas repetitiva…

Por debug, vi que o erro acontece na primeira linha:

SimpleEmail email = new SimpleEmail();

Se for erro de import, talvez me ajude a identificar olhando meus imports, que são:

[code]
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.tasks.Task;
import br.com.caelum.vraptor.tasks.scheduler.Scheduled;[/code]

Até onde sei, o NoClassDefFoundError indica a não existencia de uma classe…
mas o entendimento não vai além disso… se houver até faria tentativas de mudar algo… é o que vou tentar agora… se tiver me passa algum direcionamento…

soh para constar novamente e não precisar voltar no post, minha rotina de email completa seria:

[code]public void enviaEmailSimples() throws EmailException {

	SimpleEmail email = new SimpleEmail(); // &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; O ERRO JA ACONTECE AQUI...
	email.setHostName(&quot;smtp.gmail.com&quot;);
	// e-mail
	email.addTo(&quot;meuemail@gmail.com&quot;, &quot;Anderson&quot;); // destinatário
	email.setFrom(&quot;solucaocdri@gmail.com&quot;, &quot;SolucaoCorretora&quot;); // remetente
	email.setSubject(&quot;Teste -&gt; Email simples&quot;); // assunto do e-mail
	email.setMsg(&quot;Teste de Email utilizando commons-email&quot;); // conteudo do
	// e-mail
	email.setAuthentication(&quot;solucaocdri@gmail.com&quot;, &quot;SENHA&quot;);
	email.setSmtpPort(465);
	email.setSSL(true);
	email.setTLS(true);
	email.send();
}[/code]