alguem me pode dar um exemplo de codigo bem simples de como enviar um file que esta na directoria c:\teste.jar eu entao uma mensagem de texto, do meu correio electronico luis@hotmail.com para o correio electornico claudio@hotmail.com.
import java.net.Socket;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* @author Erko Bridee de Almeida Cabrera
* <br><br>
* <b>Descrição:</b><br>
* classe para utilização do sitema para envio de e-mail´s de acordo
* com o necessário
*/
public class Mail {
/**
* <code> String mailServerHost </code> - endereço do servidor de e-mail
* <br>
* <b>informação obrigatória</b>
*/
private String mailServerHost;
/**
* <code> String mailServerPort </code> - porta do serviço de e-mail
* <br>
* <b>informação obrigatória</b>
*/
private String mailServerPort;
/**
* <code> String mailServerHostCluster </code> - endereço do servidor cluster de e-mail
*/
private String mailServerHostCluster;
/**
* <code> String mailServerPortCluster </code> - porta do serviço de e-mail do servidor cluster
*/
private String mailServerPortCluster;
/**
* Construtor sem parametros da classe
*/
public Mail() {
}
/**
* Construtor da classe que recebe como parametro a indicação do
* servidor de e-mail que será utilizado
*
* @param mailServerHost
*/
public Mail(String mailServerHost) {
this.setMailServerHost( mailServerHost );
}
/**
* Método para envio de e-mail
*
* @param String origem - endereço relacionado a origem do e-mail
* @param String[] mailTO - endereços dos destinatários do e-mail
* @param String assunto - assunto relacionado ao e-mail
* @param String mensagem - corpo do e-mail, mensagem texto que será enviado
* @param boolean isHTML - caso verdadeiro muda o formato da mensagem para HTML
* @param String[] anexos - endereços dos anexos
* @throws Exception
*/
public void createAndSendMessage(String origem, String[] mailTO, String assunto, String mensagem, boolean isHTML, String[] anexos) throws AddressException, MessagingException {
// para uso de debug
boolean debug = false;
// flag que indica se envia ou não o e-mail, validando se existe algum servidor de SMTP dispon~ivel
boolean envia = false;
Properties props = System.getProperties();
// verificando servidor principal de SMTP está ativo
if( this.servidorAtivo( this.getMailServerHost(), this.getMailServerPort() ) ) {
// utiliza o servidor para enviar o e-mail
props.put("mail.smtp.host", this.getMailServerHost() );
props.put("mail.smtp.port", this.getMailServerPort() );
envia = true;
// caso o servidor principal de SMTP não esteja ativo
} else {
// verificando se as informações do servidor de SMPT clustes foram informadas
if(
!this.getMailServerHostCluster().trim().equals("") &&
this.getMailServerHostCluster() != null &&
!this.getMailServerPortCluster().trim().equals("") &&
this.getMailServerPortCluster() != null
) {
// verifica se o servidor clustes de SMTP está ativo
if( this.servidorAtivo( this.getMailServerHostCluster(), this.getMailServerPortCluster() ) ) {
// utiliza o servidor clustes para enviar o e-mail
props.put("mail.smtp.host", this.getMailServerHostCluster() );
props.put("mail.smtp.port", this.getMailServerPortCluster() );
envia = true;
}
}
}
// caso o flag que valida se existe algum servidor ativo então executa esse bloco de código
if( envia ) {
// Get a Session object
Session session = Session.getInstance(props);
if (debug)
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
// informando a origem do e-mail
message.setFrom(new InternetAddress(origem));
// adicionando endereços de e-mail que serão enviados
InternetAddress[] address = new InternetAddress[mailTO.length]; // endereços de destinatários
for( int i = 0; i < mailTO.length; i++ ) {
address[i] = new InternetAddress( mailTO[i].trim() );
}
// setando os endereços a mensagem que será enviada
message.addRecipients(Message.RecipientType.TO, address);
// mensagem que será exibida como assunto do e-mail
message.setSubject(assunto);
// corpo da mensagem do e-mail
BodyPart messageBodyPart = new MimeBodyPart();
//---------------------------------------------------------------------
// verificando se a mensagem é em formato HTML
// data: 07/11/2005, por: Erko Bridee de Almeida Cabrera
if( isHTML ) {
messageBodyPart.setContent( mensagem, "text/html" );
// caso não seja
} else {
messageBodyPart.setContent( mensagem, "text/plain" );
}
//---------------------------------------------------------------------
Multipart multipart = new MimeMultipart();
multipart.addBodyPart( messageBodyPart );
if (anexos != null) {
for (int i = 0; i < anexos.length; i++) {
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(anexos[i]);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(anexos[i]);
multipart.addBodyPart(messageBodyPart);
}
}
message.setContent(multipart);
Transport.send(message);
} else {
System.out.println("+-----------------------------------------------------+");
System.out.println("| Servico de envio de e-mail indisponivel |");
System.out.println("+-----------------------------------------------------+");
}
}
////////////////////////////////////////////////////////////////////////////////
/**
* Método responsável pelo envio do e-mail
*
* @param Message mensagem
*/
public static void sendMessage(Message mensagem) {
try {
Transport.send(mensagem);
} catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
////////////////////////////////////////////////////////////////////////////////
/**
* Método que testa se o servidor de e-mail está ativo
*
* @param String host - host do servidor de a-mail
* @param String porta - porta do serviço de e-mail no host especificado
*/
public boolean servidorAtivo( String host, String porta ) {
boolean ativo = false;
try {
Socket socket = new Socket( host, Integer.parseInt( porta ) );
ativo = socket.isConnected();
socket.close();
} catch( Exception ex ) {
ativo = false;
}
return ativo;
}
////////////////////////////////////////////////////////////////////////////////
/*------------------------------------------------------------------------------------------------------------
* Métodos de acesso aos atributos da classe
*------------------------------------------------------------------------------------------------------------*/
/**
* Retorna o endereço do servidor de e-mail
*
* @return String mailServerHost.
*/
public String getMailServerHost() {
return mailServerHost;
}
/**
* Seta o endereço do servidor de e-mail
*
* @param String mailServerHost
*/
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
/**
* @return String mailServerHostCluster
*/
public String getMailServerHostCluster() {
return mailServerHostCluster;
}
/**
* @param String mailServerHostCluster
*/
public void setMailServerHostCluster(String mailServerHostCluster) {
this.mailServerHostCluster = mailServerHostCluster;
}
/**
* @return String mailServerPort
*/
public String getMailServerPort() {
return mailServerPort;
}
/**
* @param String mailServerPort
*/
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
/**
* @return String mailServerPortCluster
*/
public String getMailServerPortCluster() {
return mailServerPortCluster;
}
/**
* @param String mailServerPortCluster
*/
public void setMailServerPortCluster(String mailServerPortCluster) {
this.mailServerPortCluster = mailServerPortCluster;
}
/*------------------------------------------------------------------------------------------------------------
* Fim dos métodos de acesso aos atributos da classe
*------------------------------------------------------------------------------------------------------------*/
}
utilize o método createAndSendMessage
para enviar o e-mail, é necessário que antes de você enviar
o e-mail repassar para a classe as informações obrigatorias:
:arrow: mailServerHost
:arrow: mailServerPort
as informações do clustes é para um possivel servidor SMTP cluster
que você tenha disponível, para ser usado caso o primeiro
não responda ao teste de conexão, que verifica se o serviço está
ativo, ou não