Ref.: Dúvida sobre Parâmetros

Como faço para passar array nos parâmetros 8 e 9 respectivamente?

Chamada

		EnviaEmail ee = new EnviaEmail("",
									   "",
									   "",
									   "Fulano de Tal",
									   "fulanodetal@ipiranga.com.br",
									   "Beltrano de Tal",
									   "beltranodetal@ipiranga.com.br",
									   {"cicranodetal@ipiranga.com.br"},
									   {"cicranodetal@ipiranga.com.br"},
									   new File("C:\Teste.xls"),
									   "Assunto ...",
									   new StringBuffer("Mensagem ..."));		

Classe

	public EnviaEmail(final String strNomeServidorSMTP,
					  final String strUsuarioServidorSMTP,
					  final String strSenhaServidorSMTP,
					  final String strNomeRemetente,
					  final String streMailRemetente,
					  final String strNomeDestinatario,
					  final String streMailDestinatario,
					  final String[] streMailDestinatarioCC,
					  final String[] streMailDestinatarioBCC,
					  final File[] fAnexos,
					  final String strAssunto,
					  final StringBuffer sbMensagem) {
		
		this.Envia();
	}

Tudo bem prsantos?

ve se ajuda:

new String [] {“teste”}

abraco

		EnviaEmail ee = new EnviaEmail("",
									   "",
									   "",
									   "Fulano de Tal",
									   "fulanodetal@ipiranga.com.br",
									   "Beltrano de Tal",
									   "beltranodetal@ipiranga.com.br",
									   new String[] {"cicranodetal@ipiranga.com.br"},
									   new String[] {"cicranodetal@ipiranga.com.br"},
									   new File("C:\Teste.xls"),
									   "Assunto ...",
									   new StringBuffer("Mensagem ..."));		

Deve funcionar.

isso ae…
agora so testar e ve se da certo.

Valeu rapaziada!

Muito Obrigado.

Voltei!

Como para passar para o construtor de “EnviaEmail”, somente alguns parâmetros?

O que devo passar?

Por ex.: Não desejo passar os 3 primeiros parâmetros.

         E como testa-los quando lá chegar?

Ser for para ter vários construtores desse jeito, recomendo você usar o “Design Pattern Builder”. Procure por ele.

Não!

Só tenho um construtor.

E ae prsantos?

tipo…mas se voce quiser mandar menos parametros voce vai ter que alterar o construtor, os atributos que o construtor esta decebendo.

ai ao inves de mandar isso tdo de parametros, voce pode criar um array de string e mandar apenas um arrays de strings.

seria mais ou menos isso?

Boa moleque!

Posso postar meu código e vc. me ajuda a desenvover ele?

Ainda falta tb. crias as exceptions, tenho dificuldade nisso ainda.

posta ae q ajudo sim…sem problema…

EDIT - > mas uma duvida, voce ta fazendo uma classe que envia email pra que servidor? gmail? hotmail?

Passe objetos com sentido, aqueles da tua aplicação, não objetos da API do java.

Tente algo como:

[code] public EnviaEmail(final ServidorSMTP servidor,
final Remetente remetente,
final Destinatario destinatario,
final List destCC,
final List destBCC,
final List anexos,
final Assunto assunto,
final Mensagem mensagem) {

	this.Envia();
}

[/code]Semântica é a parte mais importante de um sistema orientado à objetos. Fica muito mais fácil para montar outros construtores e usar padrões.

Estou desenvolvendo (TENTANDO Né!?) uma Classe Genérica

[/code]
/**
*
*/
package principal;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**

  • @author prsantos

*/
public class EnviaEmail {
private String strNomeServidorSMTP;
private String strUsuarioServidorSMTP;
private String strSenhaServidorSMTP;
private String strNomeRemetente;
private String streMailRemetente;
private String strNomeDestinatario;
private String streMailDestinatario;
private String[] streMailDestinatarioCC;
private String[] streMailDestinatarioBCC;
// private ArrayList<File> alAnexos;
private File[] fAnexos;
private String strAssunto;
private StringBuffer sbMensagem;
private boolean bolAvisoRecebimento;

public EnviaEmail(final String strNomeServidorSMTP,
				  final String strUsuarioServidorSMTP,
				  final String strSenhaServidorSMTP,
				  final String strNomeRemetente,
				  final String streMailRemetente,
				  final String strNomeDestinatario,
				  final String streMailDestinatario,
				  final String[] streMailDestinatarioCC,
				  final String[] streMailDestinatarioBCC,

// final ArrayList<File> alAnexos,
final File[] fAnexos,
final String strAssunto,
final StringBuffer sbMensagem,
final boolean bolAvisoRecebimento) {

	this.strNomeServidorSMTP = strNomeServidorSMTP;
	this.strUsuarioServidorSMTP = strUsuarioServidorSMTP;
	this.strSenhaServidorSMTP = strSenhaServidorSMTP;
	this.strNomeRemetente = strNomeRemetente;
	this.streMailRemetente = streMailRemetente;
	this.strNomeDestinatario = strNomeDestinatario;
	this.streMailDestinatario = streMailDestinatario;
	this.streMailDestinatarioCC = streMailDestinatarioCC;
	this.streMailDestinatarioBCC = streMailDestinatarioBCC;

// this.alAnexos = alAnexos;
this.fAnexos = fAnexos;
this.strAssunto = strAssunto;
this.sbMensagem = sbMensagem;
this.bolAvisoRecebimento = bolAvisoRecebimento;

	this.Envia();
}

private void Envia() {
	try {
		//Configura algumas propriedades e pega a seção padrão
		Properties props = new Properties();
        //props.put(&quot;mail.debug&quot;, &quot;true&quot;);												//
		//props.put(&quot;mail.from&quot;, &quot;&quot;);
        //props.put(&quot;mail.transport.protocol&quot;, &quot;smtp&quot;);									//define protocolo de envio como SMTP   
        //props.put(&quot;mail.smtp.starttls.enable&quot;,&quot;true&quot;);								//
        //props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;);											//ativa autenticacao   
        //props.put(&quot;mail.smtp.socketFactory.port&quot;, &quot;465&quot;);								//mesma porta para o socket   
        //props.put(&quot;mail.smtp.socketFactory.fallback&quot;, &quot;false&quot;);						//   
        //props.put(&quot;mail.smtp.socketFactory.class&quot;, &quot;javax.net.ssl.SSLSocketFactory&quot;);	//
        props.put(&quot;mail.smtp.host&quot;, &quot;smtp.ipiranga.com.br&quot;);							//server SMTP do GMAIL   
        //props.put(&quot;mail.smtp.port&quot;, &quot;465&quot;);											//porta   
        //props.put(&quot;mail.smtp.user&quot;, &quot;prsantosbr@gmail.com&quot;);							//usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)   

// mail.debug boolean
// mail.from String
// mail.mime.address.strict boolean
// mail.host String
// mail.store.protocol String
// mail.transport.protocol String
// mail.user String
// mail.protocol.class String
// mail.protocol.host String
// mail.protocol.port int
// mail.protocol.user String

		Session session = Session.getDefaultInstance(props, null);
		session.setDebug(false);
		
		//Cria Mensagem
		MimeMessage msg = new MimeMessage(session);
		
		//Define o endereço do remetente (DE / FROM)
		msg.setFrom(new InternetAddress(this.streMailRemetente, strNomeRemetente));
		
		//Define o endereço do destinatário (PARA / TO)
		msg.setRecipient(Message.RecipientType.TO, new InternetAddress(streMailDestinatario, strNomeDestinatario));
		
		//Define os endereços dos destinatário (Com Cópias / CC)
		if (streMailDestinatarioCC != null) {
			InternetAddress[] iaEmailDestinatarioCC = new InternetAddress[streMailDestinatarioCC.length];
			for (int i = 0; i &lt; streMailDestinatarioCC.length; i++) {
				iaEmailDestinatarioCC[i] = new InternetAddress(streMailDestinatarioCC[i]);
			}
			msg.setRecipients(Message.RecipientType.CC, iaEmailDestinatarioCC);
		} else {
			//
		}
		
			//Define os endereços dos destinatário (Com Cópias / BCC)
		if (streMailDestinatarioBCC != null) {
			InternetAddress[] iaEmailDestinatarioBCC = new InternetAddress[streMailDestinatarioBCC.length];
			for (int i = 0; i &lt; streMailDestinatarioBCC.length; i++) {
				iaEmailDestinatarioBCC[i] = new InternetAddress(streMailDestinatarioBCC[i]);
			}
			msg.setRecipients(Message.RecipientType.BCC, iaEmailDestinatarioBCC);
		} else {
			//
		}

		//Define o assunto
		msg.setSubject(this.strAssunto);
		
		//Aviso de Recebimento
		if (bolAvisoRecebimento) {
			msg.addHeaderLine(&quot;ReturnReceipt&quot;);
			msg.setHeader(&quot;ReturnReceipt&quot;, &quot;1&quot;);
			
			msg.addHeaderLine(&quot;Disposition-Notification-To&quot;);
			msg.setHeader(&quot;Disposition-Notification-To&quot;, strNomeRemetente);
			
		}
		
		//Define data
		msg.setSentDate(new Date());
		
		//Cria MultiParte
		MimeMultipart mmpMultiParte = new MimeMultipart();
	
		//Cria e preenche a primeira parte da mensagem
		MimeBodyPart mbpCorpoMensagem = new MimeBodyPart();
		
		//Mensagem
		mbpCorpoMensagem.setText(sbMensagem.toString());
		
		//
		mmpMultiParte.addBodyPart(mbpCorpoMensagem);
		msg.setContent(mmpMultiParte);		
		
		for (int i = 0; i &lt; this.fAnexos.length; i++) {
			if (!fAnexos[i].isDirectory()) {
				//Anexa arquivo
				//Cria e preenche a segunda parte da mensagem
				MimeBodyPart mbpAnexos = new MimeBodyPart();
				FileDataSource fdsArquivoAnexo = new FileDataSource(fAnexos[i].toString());
				DataHandler dhArquivoAnexo = new DataHandler(fdsArquivoAnexo);
				mbpAnexos.setDataHandler(dhArquivoAnexo);
				mbpAnexos.setFileName(fdsArquivoAnexo.getName());
				mmpMultiParte.addBodyPart(mbpAnexos);
				msg.setContent(mmpMultiParte);		
			
				//Implementa corpo da mensagem
				MimeBodyPart mbpCorpoMensagem2 = new MimeBodyPart();
				mbpCorpoMensagem2.setText(fdsArquivoAnexo.getName());
				mmpMultiParte.addBodyPart(mbpCorpoMensagem2);
				msg.setContent(mmpMultiParte);		

				System.out.println(&quot;Local do Arquivo a enviar - &quot; + fdsArquivoAnexo.getFile());
	
				mbpCorpoMensagem2 = null;
				dhArquivoAnexo = null;
				fdsArquivoAnexo = null;
				mbpAnexos = null;
			}
		}		
		
		//Envia mensagem
		Transport.send(msg);
		
		System.out.println(&quot;Email Enviado com sucesso ...&quot;);
	} catch (Exception mex) {
		mex.printStackTrace();
	}
}

}

[code]

Ela já funciona, porém preciso melhora-la em muitos aspectos.

Inclusive no que se diz respeito a EXCEPTIONS.

Te agradecerei muito se me ajudar a desenvolve-la

Valeu!

Q construtor enorrrrme :slight_smile:

Q tal refatorar para uma Fluent Interface?

new EmailMessage() .from("demo@guilhermechapiewski.com") .to("destination@address.com") .withSubject("Fluent Mail API") .withBody("Demo message") .send();

Fonte:
http://gc.blog.br/2008/03/03/um-exemplo-pratico-de-fluent-interface/

EU RECOMENDARIA VOCE A CRIAR UMA CLASSE E INTERNAMENTE DESSA CLASSE CRIAR DIVERSOS METODOS COM O MESMO NOME, NO ENTANTO, COM DIFERENTES TIPOS DE PARAMETROS E QTDS DE PARAMETROS.

QUANDO O USUARIO DIGITAR APENAS OS CAMPOS PARA COPIA, POR EXEMPLO.
O JAVA AUTOMATICAMENTE USA O METODO COM OS PARAMETROS OS QUAIS MELHORES SE ENQUADRAM AO METODO…

ESSE PROCEDIMENTOS CHAMA-SE [color=red]SOBRECARGA DE PARAMETROS.[/color]

PROCURA SOBRE ESSE ASSUNDO DE SOBRECARGA DE PARAMETROS QUE EH MUITO INTERESSANTE!!!

cara le esse turorial ai que fiz…
tem a classe de enviar tdo certin…e com construtor de boa…

olha ai e me fala…

http://www.guj.com.br/posts/list/87637.java

Valeu rapaziada.

Estou indo pra casa agora.

Lá quando chegar, irei examinar tudo isoo.

Muito Obrigado.