API Commons Mail - Usando GMail

API Commons Mail - Usando GMail

Tudo bem Pessoal?

Resolvi fazer esse novo post para atender as pessoas que utilizaram um outro post meu relacionado a API Java Mail. E também pela quantidade de pessoas sugerindo o teste da API Commons Mail.

Então como o padrão utilizado no outro post sobre Java Mail vou explicar como fazer os downloads, setar o path e utilizar a API.

Só foi possível a criação dos post pois algumas pessoas contribuíram com material ou até com todo o material.

Colaboradores:
renatocustodio , claytoncastelli.

Parte 1 - Download API Commons Mail

Faça o download de todos os arquivos .jar e coloque-os de preferência em uma pasta relacionada ao seu projeto.


Parte 2 - Setando o classpath

  • como uso o eclipse, eu apenas adiciono os arquivos .jar no meu Path do projeto que estou usando, caso quem não usar o eclipse procure uma forma de setar o classpath, porque o resto do tutorial é aplicavel a todos os tipos de ferramenta.
  • clique com o botão direito e vá na opção Build Path e depois em Configute Build Path…
  • abrira uma janela, e nela vá na aba Libraries e depois clique no botao Add External JARs…
  • vá aonde esta os arquivos .jar e adicione um por um. Pronto, API Commons Mail adicionada ao Path.

[b]
Parte 3 - Envio de mensagem

  • Apenas com mensagem [/b]

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

public class TesteCommons {
	
	public static void main(String[] args) {

		SimpleEmail email = new SimpleEmail();

		try {
		email.setDebug(true);
		email.setHostName("smtp.gmail.com");
		email.setAuthentication("seu_nome_de_usuario","sua_senha");
		email.setSSL(true);
		email.addTo("para_quem_enviara_email"); //pode ser qualquer um email
		email.setFrom("seu_email_gmail"); //aqui necessita ser o email que voce fara a autenticacao
		email.setSubject("Teste");
		email.setMsg("Mensagem Testando");
		email.send();

		} catch (EmailException e) {

		System.out.println(e.getMessage());

		} 

	}

}

- Envio de mensagem com arquivo


import java.io.File;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;

public class TesteCommonsFile {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		  // Create the attachment
		  
                  // Caminho do arquivo a ser enviado
		  File f = new File("C:\\Documents and Settings\\Gabriel\\Meus documentos\\Meus arquivos recebidos\\rms.java"); 
		  		  
		  EmailAttachment attachment = new EmailAttachment();
		  attachment.setPath(f.getPath()); // Obtem o caminho do arquivo
		  attachment.setDisposition(EmailAttachment.ATTACHMENT);
		  attachment.setDescription("File");
		  attachment.setName(f.getName()); // Obtem o nome do arquivo

		  try {
			// Create the email message
			MultiPartEmail email = new MultiPartEmail();
			email.setDebug(true);
			email.setHostName("smtp.gmail.com");
			email.setAuthentication("seu_usuario_login","sua_senha");
			email.setSSL(true);
			email.addTo("para_quem_enviara_email"); //pode ser qualquer um email
		        email.setFrom("seu_email_gmail"); //aqui necessita ser o email que voce fara a autenticacao
			email.setSubject("The file");
			email.setMsg("The file");

			// add the attachment
			email.attach(attachment);

			// send the email
			email.send();
		} catch (EmailException e) {
			e.printStackTrace();
		}
	}

}

Novamente queria lembrar que o tópico só pode ser iniciado com a ajuda dos Colaboradores: renatocustodio , claytoncastelli.

Observação:

  • Toda sugestão será bem vinda.
  • Quem possuir algo que possa ser agregado ao tópico só enviar que adicionaremos.

Link para API Java Mail: http://www.guj.com.br/posts/list/87637.java

Obrigado e espero que ajude várias pessoas.

Grande Gabriel Massote!!

Post de excelente qualidade novamente!

É quase um Menino Email esse garoto! =D

Olha o menino properties falando rs.

Valeu Guga e ta na hora de você começar a participar do GUJ também.

Abração.

[quote=gabrielmassote]Olha o menino properties falando rs.

Valeu Guga e ta na hora de você começar a participar do GUJ também.

Abração.[/quote]

É uma idéia muito boa mesmo.
Acho que vou passar o post da Java Process Status do blog pra cá também.

[quote=XpLoDeR][quote=gabrielmassote]Olha o menino properties falando rs.

Valeu Guga e ta na hora de você começar a participar do GUJ também.

Abração.[/quote]

É uma idéia muito boa mesmo.
Acho que vou passar o post da Java Process Status do blog pra cá também.[/quote]

Boa Boa.

Abração.

Post incrível… parabéns ao autor e seus colaboradores.

[]'s

mulekada, =D

sugestão

acho q seria legal esses posts entrarem como tutoriais no GUJ, né? tentem falar com algum moderador, acho uma boa

abraços e parabens

E ae carneiro?

valeu pela dica.

irei ver se consigo entrar em contado com algum admin e ver se consigo fazer como um tutorial.

valeu pela colcaboracao de todos.

abracos

E ai Gabriel,
mto bom a parada, já havia lido seu outro tópico.

Porém, não vi onde você utiliza o tratamento para servidor proxy. Onde você tratou isto?

Tudo bem hopster ?

então, utilizando a api commons mail eu não vi nada para poder colocar um servidor proxy.

Vou procurar saber e se achar posto aqui e lhe aviso.
Caso alguem descobrir ou você mesmo poste que atualizo o post.

abraço e desculpe não poder ajudar no momento.

Excelente Post, mas estou com alguns problemas.
Será que alguém me poderia ajudar?

O envio de e-mail funciona perfeitamente, mas quando tento colocar um attachment, surge um erro, como se não conseguisse encontrar a classe

“email.attach”

importei tudo correctamente, mas é impossível colocar o attach no e-mail.

Consigo criar o attach desta forma:

EmailAttachment attachment = new EmailAttachment();
attachment.setPath(filePath+“teste.pdf”);
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(“Picture of John”);
attachment.setName(“John”);

… mas surge sempre um erro em:

email.attach(attachment);

que é o seguinte:

symbol : method attach (org.apache.commons.mail.EmailAttachment)
location: class org.apache.commons.mail.SimpleEmail
email.attach(attachment);

Já alguem teve este problema?
Agradeço alguma ajuda

Excelente post!!
Uma dica…
Poderia explicar nos dois tutoriais que tu fez, este e o JavaMail para fazer leitura de e-mails também…

[color=darkred]Otimo post…

envia exemplos de recebimento de e-mails… [/color]

Aqui num funciona…

DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 465, isSSL false
Sending the email to the following server failed : smtp.gmail.com:25

Obs.: Me conecto a internet através do proxy AnalogX.

[quote=marthian_2]Aqui num funciona…

DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 465, isSSL false
Sending the email to the following server failed : smtp.gmail.com:25

Obs.: Me conecto a internet através do proxy AnalogX.[/quote]
Você não deve ter usado

  email.setSSL(true);  

Parece que descobri o motivo…

Como uso proxy, ao invés de colocar smtp.gmail.com tenho que colocar o ip da máquina que contém o proxy(o servidor), e lá é que gerencio as contas do e-mail.
O problema é que uso o analogx e pelo que vi em pesquisas ele é pessimo pra gerenciar e-mails. Ja intalei o winconnection, mais não sei como configurá-lo nem o www funciona mais…

Se alguém puder me ajudar, ficarei grato!

[quote]
Parece que descobri o motivo…

Como uso proxy, ao invés de colocar smtp.gmail.com tenho que colocar o ip da máquina que contém o proxy(o servidor), e lá é que gerencio as contas do e-mail.
O problema é que uso o analogx e pelo que vi em pesquisas ele é pessimo pra gerenciar e-mails. Ja intalei o winconnection, mais não sei como configurá-lo nem o www funciona mais…

Se alguém puder me ajudar, ficarei grato![/quote]

Tudo bem marthian_2?

Desculpe meu caro, mas isso sai de meus conhecimentos.
Espero que alguem possa lhe ajudar ou que ja tenha resolvido o problema.
Abraço.

Gabriel eu sei que já tem tempo que você postou este blog, mas eu estou precisando de ajuda com ele.

Eu dei um control+c e um control+v na sua classe e coloquei as informações de uma conta de e-mail que eu tenho no gmail, mas não tá funcionando de jeito nenhum dando um erro em tempo de execução que mostra o seguinte:

Sending the email to the following server failed : smtp.gmail.com:25

O problema é com a minha conta? cidfillippe@gmail.com

Tem como me ajudar??

Aguardo respostas…

OBrigado

O Gmail não funciona na porta 25
Aqui no GUj tem várias mensagens de como enviar email com gmail, dá uma procuradinha

Meu caro,

sem problemas por ter tempo que postei aqui. O tempo não importa, e sim que te ajude.
Mas tenta mudar a porta para 465 da seguinte forma:

email.setSmtpPort(465);

se der certo me fale.
abraco