Re: Destinatários de um email

6 respostas
T

Uai, se o email for [email removido], tenho de mostrar a1234 ou então o nome correto (que seria Andre da Silva?)

Se por acaso o email tiver sido registrado como “Andre da Silva <[email removido]>” o próprio InternetAddress já lhe retorna o nome correto, você não precisa chutar esse nome.

Tente não usar “parse”. É melhor você criar um array de InternetAddress e passar o tal array.

EDIT - na verdade nem sabia que existia tal método “parse”. Vivendo e aprendendo…

6 Respostas

T

Por exemplo:

int nEnderecos = ...;
InternetAddress enderecos = new InternetAddress [nEnderecos];
for (int i = 0; i < nEnderecos; ++i) {
     enderecos[i] = new InternetAddress (email[i], nome[i], "ISO-8859-1");
}

onde email[i] é o email (como "[email removido]") e nome[i] é o que deve aparecer no email (como “Roberto Jefferson”).

T

Vanessa, só tem um probleminha no meu código, é um InternetAddress[] e não um InternetAddress que eu tinha de declarar.

int nEnderecos = ...;
 InternetAddress[] enderecos = new InternetAddress [nEnderecos];
 for (int i = 0; i < nEnderecos; ++i) {
      enderecos[i] = new InternetAddress (email[i], nome[i], "ISO-8859-1");
 }
T
message.setRecipients(Message.RecipientType.CC,enderecos);

Se você baixou direitinho o javamail, deve ter baixado também a documentação e os javadocs (que ficam no subdiretório docs\javadocs e podem ser acessados a partir do arquivo index.html.) O javadoc do setRecipients é:

setRecipients
public abstract void setRecipients(Message.RecipientType type,
Address[] addresses)
throws MessagingExceptionSet the recipient addresses. All addresses of the specified type are replaced by the addresses parameter.
Parameters:
type - the recipient type
addresses - the addresses
Throws:
MessagingException -
IllegalWriteException - if the underlying implementation does not support modification of existing values
IllegalStateException - if this message is obtained from a READ_ONLY folder.

V

Preciso da ajuda de vocês!!!
Estou com o seguinte problema:
tenho um método que envia email e o email enviado, vem com o Para e o Cópia exibidos como email, por exemplo:

PARA: [email removido];[email removido];[email removido]
COPIA: [email removido];[email removido]

Necessito com urgência de trocar esses emails exibidos, por nomes. Daí eles seriam exibidos como:

PARA: VANESSA;ANA;RODNEI
COPIA: CRISTINE;ALEXANDRE

O meu método é o seguinte:

public static void EnviaEmail(String Prioridade, String para[], String copia[], String From, String topico, String Corpo)
{
 
  // Nome ou endereço do servidor de SMTP
  String smtpServer  = "mail.xxx.com.br";
  String email, matr = "";
  String toMail      = "";
  String toMailCC    = "";
 String destPara = "";
 String nomePara = "";
 String destCopia = "";

  try {
      
      // Configura a sessão
      Properties mailProps = System.getProperties();
      mailProps.put("mail.smtp.host",smtpServer);
      Session mailSession = Session.getDefaultInstance(mailProps, null);
      
      // Configuração da mensagem
      Message message = new MimeMessage(mailSession); 
      message.setFrom(new InternetAddress(From));
 
      // Obtem enderecos de email      
	 if (para!=null) {
		 for (int i=0; i < para.length; i++) 
		 {
			 matr = para[i];
			 destPara += obtemEmail(matr)+ ",";
			  			 			
		 }
		 
		 
		 message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(destPara, false));
	 }
	 	 
	 
	 if ((copia!=null)&&(copia.length != 0)) {
		 for (int i=0; i < copia.length; i++) 
		 {	
			 matr = copia[i];
			 if (matr.length() != 0) {
			     destCopia += obtemEmail(matr)+ ",";
				 
			 }
		 }
		 message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(destCopia, false));
	 }
      
      
      // Configuraçao do cabecalho do <B style="color:black;background-color:#99ff99">email</B>
      message.setSubject(topico);
      message.setSentDate(new Date());
      message.setHeader("X-MSMail-Priority","High");
      message.setHeader("X-Priority",Prioridade);
      message.setHeader("Sensitivity","Company-Confidential");
      message.setContent(Corpo,"text/html; charset=\"ISO-8859-1\"");
    
 
      // Envia a mensagem
      
      Transport.send(message);
      
      System.out.println("Seu email foi enviado com sucesso.");
      
  } catch (Exception e){ 
   System.out.print("<HR><B>"+ e.toString()+"</B><HR>" + e.getMessage());
  }
 
}

EDIT - Por favor, ponha os tags [ code ] sempre que postar código.

V

Obrigadão pela dica.
Irei tentar agora!
Vanessa

V
Estou confusa. Não consigo fazer o que disse. Olha como ficou:
public static void EnviaEmail(String Prioridade, String para[], String copia[], String From, String topico, String Corpo)
{
 
  // Nome ou endereço do servidor de SMTP
  String smtpServer  = "mail.*****.com.br";
  String email, matr = "";
  String toMail      = "";
  String toMailCC    = "";
 //String destPara = "";
 //String nomePara = "";
 //String destCopia = "";
 String destPara[] = null;
 String nomePara[] = null;
 String destCopia[] = null;
 String nomeCopia[] = null;

  try {
      
      // Configura a sessão
      Properties mailProps = System.getProperties();
      mailProps.put("mail.smtp.host",smtpServer);
      Session mailSession = Session.getDefaultInstance(mailProps, null);
      
      // Configuração da mensagem
      Message message = new MimeMessage(mailSession); 
      message.setFrom(new InternetAddress(From));
 
      // Obtem enderecos de email      
	 if (para!=null) {
	     for (int i = 0; i < para.length; ++i) {
	         InternetAddress[] enderecos = new InternetAddress [para.length];
	         matr = para[i];
	         destPara[i] = obtemEmail(matr)+ ",";
	         nomePara[i] = obtemNome(matr)+ ",";
	         enderecos[i] = new InternetAddress (destPara[i], nomePara[i], "ISO-8859-1");
	    }
   // 	 message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(nomePara, false));
    	        
	 }
	 	 
	 
	 if ((copia!=null)&&(copia.length != 0)) {
		 for (int i=0; i < copia.length; i++) 
		 {	
		     InternetAddress[] enderecos = new InternetAddress [copia.length];
	         matr = copia[i];
	         destCopia[i] = obtemEmail(matr)+ ",";
	         nomeCopia[i] = obtemNome(matr)+ ",";
	         enderecos[i] = new InternetAddress (destCopia[i], nomeCopia[i], "ISO-8859-1");

		 }
		// message.setRecipients(Message.RecipientType.CC,InternetAddress.parse(destCopia, false));
	 }
      
      
      // Configuraçao do cabecalho do <B style="color:black;background-color:#99ff99">email</B>
      message.setSubject(topico);
      message.setSentDate(new Date());
      message.setHeader("X-MSMail-Priority","High");
      message.setHeader("X-Priority",Prioridade);
      message.setHeader("Sensitivity","Company-Confidential");
      message.setContent(Corpo,"text/html; charset=\"ISO-8859-1\"");
    
 
      // Envia a mensagem
      
      Transport.send(message);
      
      System.out.println("Seu email foi enviado com sucesso.");
      
  } catch (Exception e){ 
   System.out.print("<HR><B>"+ e.toString()+"</B><HR>" + e.getMessage());
  }
 
}

Minha dúvida é:
1 - tenho que enviar um único email com todos os destinatários...como vou fazer isso?
2 - Comentei o message.setRecipients...mas tenho que usá-lo em algum momento, né?

Criado 8 de julho de 2005
Ultima resposta 11 de jul. de 2005
Respostas 6
Participantes 2