Duvidas - JavaMail - Envio de Email

8 respostas
D

Galera é o seguinte, estou com duvidas a respeito do envio de email. Vou descrever a minha situação.

Cliente loga na aplicação, o login do usuário é seu próprio email.

Quando o usuário compra um produto, é enviado um email para o dono do produto, sendo TO: o usuário logado(cliente), FROM: o dono o produto.

E pelo que eu pude ver nos exemplos de envio de email eu teria que ter um Properties com as configurações de servidor de email(mail.host), mais nesse caso eu nem sei como começar, pois não saberei qual é o servidor de email do cliente ou dono do produto.

Um dos tutoriais que eu achei foi aqui mesmo no forum, que tem esse pedaço de código:

Properties p = new Properties(); p.put("mail.host", "smtp2.locaweb.com.br");

E que eu me refiro é ao “mail.host”, pois no meu caso é somente pegar o email do usuário que esta na sessão e encaminhar um email com as informações da compra para o email do dono do produto.
E agora como seria esse “mail.host”?

8 Respostas

vitinho1712

Acredito que teria que ter uma configuração de email, onde o usuário possa informar o servidor de email

D

Essa opção esta descartada, tem que ser automático.

O que o sistema vai fazer é somente pegar o email do usuário origem e enviar para o usuário de destino. E só.

E

davisnog:
Essa opção esta descartada, tem que ser automático.

O que o sistema vai fazer é somente pegar o email do usuário origem e enviar para o usuário de destino. E só.

Não existe configuração automática para clientes de email. (ou seja, programas que enviam emails).
E ponto final.
Nunca descarte opções.
Veja o exemplo do MS Outlook Express - ele SEMPRE pede o endereço de um servidor de email quando você entra nele pela primeira vez.

(A propósito, talvez você esteja se confundindo com uma rede corporativa Windows, onde há um Active Directory e que informa ao MS Outlook, durante a configuração, (não Outlook Express) qual é o nome default do servidor Exchange. Mas mesmo isso requer alguma intervenção do usuário durante a instalação.
Mas no seu caso, que é para usar JavaMail para se conectar a um servidor SMTP/POP3 normal, isso não existe. )

No seu caso em particular, costuma ser bastante simples, porque o seu provedor de Internet - onde você hospeda sua aplicação - costuma informar o hostname ou o endereço do servidor de email que você deve usar para suas aplicações.

thiago_spdvr

Na verdade vc só precisa das configurações da conta de e-mail que vc ta usando pra enviar o email, por exemplo, quando vc for enviar o email para o cliente, vc precisa de servidor smtp, usuario, senha e endereço da conta que vc esta utilizando pra enviar o email.

Vc pode utilizar uma conta só pra enviar os emails, de forma que envie um pro cliente e outro pro vendedor e o sistema faça o meio de campo, redirecionando os e-mails.

D

Pelo que eu vi vou ter que fazer isso mesmo, pois eu estava querendo fazer somente o meio de campo entre “de/para” sem a necessidade de ter informações do sistema, mais vi que fica meio sem lógica, como vão saber que a mensagem foi enviada pelo meu sistema.

thiago_spdvr

Vc pode colocar uma assinatura nos emails enviados e/ou colocar no assunto, na hora de enviar.
Segue um exemplo de código com commons-email que utilizo em meu sistema :

public void enviaEmailCons(String dest, String paciente, String dentista, String dt_consulta, String ender, String tele){
   SimpleEmail email = new SimpleEmail();

   prop = new Propriedades();
   prop.chamaProps();
   smtp = prop.getNm_smtp().toString();
   host = prop.getNm_email().toString();
   senh = prop.getShn_email().toString();
   
   // quem estiver utilizando um SERVIDOR PROXY descomente essa parte e atribua as propriedades do SERVIDOR PROXY utilizado  
    
    /*Properties props = new Properties();  
    props.setProperty("mail.smtp.port", "25");
    props.setProperty("proxySet","true"); 
    props.setProperty("socksProxyHost","10.12.10.4"); // IP do Servidor Proxy 
    props.setProperty("socksProxyPort","8080");  // Porta do servidor Proxy 
     */

   try {  
       email.setDebug(true);  
       email.setHostName(smtp);  //endereço smtp do servidor de envio
       email.setAuthentication(host,senh); //usuário e senha da conta utilizada para envio de mensagens 
       email.setSSL(true);  
       email.addTo(dest); //pode ser qualquer um email  
       email.setFrom(host); //aqui necessita ser o email que voce fara a autenticacao  
       email.setSubject("Consulta - SDO");  
       msg = "\nSDO - Serviço de Documentação Ortodontica";
       msg+= "\n\nInformativo de Consulta Realizada";
       msg+= "\nPaciente: "+paciente;
       msg+= "\nEndereço ";
       msg+= ender;
       msg+= "\nTelefone: "+tele;
       msg+= "\nData da Consulta: "+dt_consulta;
       msg+= "\n\nObrigado pela Indicação";

       email.setMsg(msg); 
       email.send();
       JOptionPane.showMessageDialog(null, "Mensagem enviada com sucesso !","Envio de e-mail",JOptionPane.INFORMATION_MESSAGE);
   } 
   catch (EmailException e) {  
        JOptionPane.showMessageDialog(null, "Erro ao enviar e-mail: "+ e.getMessage(),"Envio de e-mail",JOptionPane.ERROR_MESSAGE);
        e.printStackTrace();
   }
}
D

Value thiago_spdvr pelo código, me deu uma idéia de como fazer. Como eu tenho conta no gmail eu utilizei o gmail para o envio de email.

O código de exemplo eu tirei desse outro forum:
http://www.velocityreviews.com/forums/t141237-send-smtp-mail-using-javamail-with-gmail-account.html

Valeu mesmo galera.

thiago_spdvr

estamos ai :slight_smile:

Criado 25 de novembro de 2009
Ultima resposta 26 de nov. de 2009
Respostas 8
Participantes 4