• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nakuro

Enviar emails em java

4 mensagens neste tópico

Boas

O meu problema e o seguinte, tenho uma classe que envia emails, so que esta programa a enviar emails para varios endereços, e eu queria coloca-la a enviar apenas para um endereço especifico.

Esta e a classe original:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;


public class EnviarMailComAutenticacao
{

    private static final String SMTP_HOST_NAME = "servidor de smtp";
    private static final String SMTP_AUTH_USER = "username";
    private static final String SMTP_AUTH_PWD  = "password";

    private static final String emailMsgTxt      = "Mensagem de confirmacao do Pedido.";
    private static final String emailSubjectTxt  = "Assunto: Confirmacao do Pedido";
    private static final String emailFromAddress = "email";

    // Lista de enderecos de email para quem vai ser enviado um mail
    private static final String[] emailList = {"email","email"};

    public static void main(String args[]) throws Exception
    {
        EnviarMailComAutenticacao smtpMailSender = new EnviarMailComAutenticacao();
        smtpMailSender.enviarMail( emailList, emailSubjectTxt, emailMsgTxt, emailFromAddress);
        System.out.println("Mail enviado com sucesso para todos os utilizadores");
    }

    public void enviarMail( String recipients[ ], String subject,String message , String from) throws MessagingException
    {
        boolean debug = false;

        //endereco do servidor de smtp
        Properties props = new Properties();
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465"); 
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        Authenticator auth = new SMTPAuthenticator();
        Session session = Session.getDefaultInstance(props, auth);

        session.setDebug(debug);

        // criar a mensagem
        Message msg = new MimeMessage(session);

        // atribuir o from e o to (Endere�o)
        InternetAddress addressFrom = new InternetAddress(from);
        msg.setFrom(addressFrom);

        InternetAddress[] addressTo = new InternetAddress[recipients.length];
        for (int i = 0; i < recipients.length; i++)
        {
            addressTo[i] = new InternetAddress(recipients[i]);
        }
        msg.setRecipients(Message.RecipientType.TO, addressTo);


        // Assunto e tipo de conteœdo
        msg.setSubject(subject);
        msg.setContent(message, "text/plain");
        Transport.send(msg);
    }


    private class SMTPAuthenticator extends javax.mail.Authenticator
    {

        public PasswordAuthentication getPasswordAuthentication()
        {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PWD;
            return new PasswordAuthentication(username, password);
        }
    }

}


eu ja tentei alterar mas tenho uma duvida numa linha:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;


public class EnviarMailComAutenticacao
{

    private final String SMTP_HOST_NAME = "smtp.gmail.com";
    private final String SMTP_AUTH_USER = "endereço";
    private final String SMTP_AUTH_PWD  = "password";

    private final String emailMsgTxt      = "O seu pedido foi registado com sucesso e sera tratado o mais brevemente possivel.\n Agredecemos a compreensão.Obrigado";
    private final String emailSubjectTxt  = "Assunto: Confirmacao do Pedido";
    private final String emailFromAddress = "webpixel.support@gmail.com";

    // Lista de enderecos de email para quem vai ser enviado um mail
    // private final String[] emailList = {"email","email"};

    //public static void main(String args[]) throws Exception
    //{
      //  EnviarMailComAutenticacao smtpMailSender = new EnviarMailComAutenticacao();
       // smtpMailSender.enviarMail( emailList, emailSubjectTxt, emailMsgTxt, emailFromAddress);
        //System.out.println("Mail enviado com sucesso para todos os utilizadores");
    //}

    public void enviarMail( String EEmail, String subject,String message , String from) throws MessagingException
    {
        boolean debug = false;

                //endereco do servidor de smtp
        Properties props = new Properties();
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465"); 
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        Authenticator auth = new SMTPAuthenticator();
        Session session = Session.getDefaultInstance(props, auth);

        session.setDebug(debug);

        // criar a mensagem
        Message msg = new MimeMessage(session);

        // atribuir o from e o to (Endere?o)
        InternetAddress addressFrom = new InternetAddress(from);
        msg.setFrom(addressFrom);

        InternetAddress addressTo = new InternetAddress(EEmail);//alterado apenas para enviar um email para uma pessoa so
       // msg.setRecipients(Message.RecipientType.TO, addressTo);//*********duvida********* era como estava inicialmente
         //queria colocar agora para enviar so para um

        // Assunto e tipo de conteœdo
        msg.setSubject(subject);
        msg.setContent(message, "text/plain");
        Transport.send(msg);
    }


    private class SMTPAuthenticator extends javax.mail.Authenticator
    {

        public PasswordAuthentication getPasswordAuthentication()
        {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PWD;
            return new PasswordAuthentication(username, password);
        }
    }

}


A minha principal duvida e saber para que serve esta linha:

msg.setRecipients(Message.RecipientType.TO, addressTo);

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem mas ja descobri, ou pelo menos aparentemente, era so trocar: msg.setRecipients(Message.RecipientType.TO, addressTo); por msg.setRecipient(Message.RecipientType.TO,addressTo);

Desculpem se fiz alguem perder tempo com isto :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim vou colocar isto mais organizado e coloco no armazem de codigo :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora