Mandar mail

Boas pessoal,

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.

Agradeço ajuda !

opa beleza?

acho que isso deve ajudar… :lol:

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

:razz: