segunda-feira, 16 de março de 2009

Enviando email pelo gmail com java e a api commons-mail

Com java, é muito simples enviar email utilizando qualquer servidor. Vou mostrar como fazer para enviar um email em html utilizando sua conta do gmail através da programação java.

Para executar o exemplo abaixo, você precisará baixar a biblioteca mail e a commons-mail.



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

public class Email {


public static void enviar( ){
try{

/*Cria uma instância da classe que realizará todo o trabalho braçal.*/
HtmlEmail email = new HtmlEmail();

/**Nessa linha você escolhe qual será o servidor smtp utilizado.
* Para o gmail, será sempre smtp.gmail.com
* */
email.setHostName("smtp.gmail.com");

/*Essa opção ativa a conexão segura via ssl. Para o servidor do gmail sempre
* deve estar habilitada também.
* */
email.setSSL(true);

/*
* Nesse linha, você escolhe seu nome de usuário e senha. Os mesmos que
* você usa para ver sua caixa de entrada.
* */
email.setAuthentication("seuemail@gmail.com", "suasenha");

/*
*Aqui você define qual é a porta smtp do servidor de email. Normalmente se usa
*como padrão a porta 25 para isso, mas no caso do gmail ele utiliza a 587.
* */
email.setSmtpPort(587);

/*Aqui você informa para quem vai o email*/
email.addTo("renatomcn@gmail.com");

/*Aqui você informa o email que aparecerá para quem recebeu como sendo o remetente.*/
email.setFrom("destinatario@gmail.com");

/*O assunto do email*/
email.setSubject("assunto do email");

/*Aqui vai o corpo da mensagem.*/
email.setHtmlMsg("Minha mensagem em html!
Tutorial ensinando como mandar email pelo gmail!");

/*Método que realmente envia o email.*/
email.send();

/*Uma mensagem mostrando que deu tudo certo...*/
System.out.println("Seu email foi enviado com sucesso!!!");
}catch(EmailException e){

/*Qualquer erro, ele cairá nessa linha.*/
System.out.println("Ocorreu um erro ao enviar o email. A mensagem informada foi: "+e.getMessage());
} }

public static void main(String[] args) {
Email.enviar();
}

}




A classe acima é auto explicativa e bem didática. Você pode melhorá-la colocando parâmetros para os valores que estão fixos e recendo entrada do usuário para a mensagem por exemplo...


Divirta-se!!!

quinta-feira, 10 de abril de 2008

Thread - Delphi .net

Outro dia precisei implementar algo usando threads no delphi .net, e me surpreendi com o quanto isso é fácil. Então resolvi dar a dica aqui =D

Bom, vamos supor que você tenha um Windows Form e dentro dele tenha um método que você gostaria que fosse executado paralelamente, ou seja, como um Thread. Um bom exemplo seria uma operação em banco de dados que consumisse muito tempo, ou anexar um arquivo e enviar por email, que é um processamento leve, porém demorado dependendo do tamanho do arquivo.

A forma mais simples de implementar isso seria:

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
Thread.Create(@metodoTal).Start;
end;
Onde nesse caso "metodoTal" seria um método que existe dentro da próprio classe e que você gostaria que fosse executado num Thread aparte. Veja bem, com uma única linha de código foi possível fazer isso. Ás vezes até eu fico impressionado com as facilidades que temos hoje em dia!

Vamos supor que dentro do Thread você gostaria de interrompê-lo, faria da seguinte forma dentro do "metodoTal":
Thread.get_CurrentThread.Abort;
E o thread morreria.

Você pode fazer utilizar o seguinte código dentro do metodoTal para ver o funcionamento:

procedure TWinForm.metodoTal;
var
i: integer;
begin
for I := 0 to 500 do
begin
Self.Text:= i.ToString;
if parar then
begin
parar:= false;
Thread.get_CurrentThread.Abort;
end;
end;
end;

Onde "Parar" é uma varíavel global do tipo boolean, e ela é setada como true no click de um botão qualquer ou algum outro evento.


Viu como é simples? =D

domingo, 6 de abril de 2008

Como tocar MP3 em Java

Esses dias tive a curiosidade de saber como tocar MP3 em java, e com alguns minutos descobri o quanto isso pode ser simples, graças as centenas de bibliotecas opensource que a comunidade JAVA já está acostumada. Darei um breve exemplo usando a biblioteca JLayer.

Para começar, faça o donwload em http://www.javazoom.net/javalayer/javalayer.html. É um arquivo bem pequeno que já vem com a documentação e o único jar necessário.

Adicione o arquivo jl1.0.jar ao CLASS_PATH da sua aplicação e análise o exemplo a seguir:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

public class Tocador {
public static void main (String args[]){
FileInputStream in;
try {
//Inicializa o FileInputStream com o endereço do arquivo para tocar
in = new FileInputStream("D:/Renato - Documentos/Minhas músicas/Beatles - Hey Jude.mp3");

//Cria uma instancia da classe player passando para ele o InpuStream do arquivo
Player p = new Player(in);

//executa o som
p.play();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
}



Esse é um código bem simples e que mostra apenas a funcinalidade mais básica de um player, tocar um som. Os comentários no código já são auto explicativos.

Existem métodos prontos para por exemplo parar a música, pegar quantos milessegundos já passaram, ou adicionar eventos que acontecem quando a música a música termina ou começa, útil para por exemplo criar uma playlist que quando uma música termina já abre automaticamente a próxima da lista. O que vale é a imaginação.

Na prática nesse código você teria que fechar o FileInputStream criado, no caso do exemplo usando um in.close(), mas para simplificar fiz dessa forma, que funciona perefeitamente, uma vez que quando o programa se encerrar a JVM automaticamente irá fechar tudo.

Espero que tenha gostado e qualquer dúvida entre em contato ou acessem a documentação online: http://www.javazoom.net/javalayer/documents.html

Até mais

segunda-feira, 31 de março de 2008

Usuário do Windows no Microsoft .net 1.1 com delphi

Às vezes quando desenvolvemos uma aplicação sentimos a necessidade de em determinado momento capturar qual o usuário logado no windows ou mesmo descobrir se ele é um administrador do sistema.

Com o framework .net essa tarefa se torna extremamente simples. Para isso, usaremos o namespace System.Security.Principal e a classe WindowsIdentity.

Exemplo prático de código:


MessageBox.Show( System.Security.Principal.WindowsIdentity.GetCurrent.Name );

Esse Código mostrará na tela uma caixa de mensagens com o nome do usuário logado no Windows. Mas e se quisermos além disse saber se esse usuário logado é um administrador? Simples, veja o exemplo a seguir:



function IsAdmin: Boolean;
begin
Result:= WindowsPrincipal.Create( WindowsIdentity.GetCurrent ).IsInRole( WindowsBuiltInRole.Administrator );
end;


Essa é uma função que retornará true caso o usuário logado seja um administrador. Caso a classe WindowsPrincipal não seja reconhecida, basta adicionar a unit/namespace System.Security.Principal...

Espero que essa dica seja útil para vocês. Até breve!

sexta-feira, 22 de fevereiro de 2008

Web 3000 - O Blog

Como meu primeiro post em meu mais novo blog, quero falar que aqui vai ter muito humor, tecnologia, música e tudo que é bom (e gratuito)...

Não perca esse blog por nada...

Web 3000, porque o futuro já começou.