Estou com uma dúvida terrível

5 respostas
T

Estou tentando fazer um programa que envie e-mails de uma conta do hotmail pelo java, mas ele acusa socket error toda vez q eu chamo essa classe.

Alguem pode me dar uma luz por favor!!!

Eis o meu código:

package pct;

import java.io.UnsupportedEncodingException;
import java.util.*;

import javax.mail.<em>;

import javax.mail.internet.</em>;

import javax.swing.JOptionPane;

/**
*

  • @author Telionatic
    */

// Classe para enviar o e-mail

public class Conexao {

public void conectar(String mensagem, String assunto, String mail,  String nome, String praKem,  String nomePrakem){
     Properties p = new Properties();
         
     
     p.put("mail.host", "smtp.live.com"); 

     
     
     
     Session session = Session.getInstance(p, new javax.mail.Authenticator() 
             
     {
         public PasswordAuthentication aut (){
             return new PasswordAuthentication ("meuusuá[email protected]","senha");
     }
     }
             );
     session.setDebug(false);
     Message msg = new MimeMessage(session);
     try{
     msg.setFrom(new InternetAddress (mail, nome));
     msg.setRecipient(Message.RecipientType.TO, new InternetAddress (praKem, nomePrakem));
     msg.setSubject(assunto);
     msg.setText(mensagem);
     Transport.send(msg);
     }
     catch (AddressException e){
         JOptionPane.showMessageDialog (null, "Endereço de e-mail inválido ou inexistente");
     }
     catch (MessagingException e){
         e.printStackTrace();
         JOptionPane.showMessageDialog(null, "Não foi possível enviar sua mensagem, verifique sua conexão com a internet");
         System.exit(0);
     }
     catch (UnsupportedEncodingException u){
         
     }

}

}

/*
autor: Telionatic
Data de criação: 01/03/2012
Descrição: Programa TESTE para fazer envio de e-mails

*/

//classe principal

public class Principal {

public static void main (String args[]){

mail mail = new mail();

Conexao  con = new Conexao();

con.conectar(Apenas um teste, teste mail, <a>"[email removido]</a>", nick, <a>"[email removido]</a>", testebot);
}

}

Por favor me ajudem!!!

5 Respostas

fabiozanardi

você não especificou a porta do serviço de SMTP, e se utiliza segurança SSL ou TLS, tente adicionar esses parametros:

segue abaixo um codigo da minha classe que envia email por um servidor que requer autenticação sem segurança SSL na porta 25, a entidade Sender le um arquivo que tem as configurações de nome de usuario, senha etc, nao sao entidades necessarias aqui, qualquer coisa avisa

package br.com.waio.domain.services;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import br.com.waio.domain.vo.Client;
import br.com.waio.domain.vo.MailMessage;
import br.com.waio.domain.vo.Sender;


public class MailSender {
	private Sender sender;
	private Client client;
	private MailMessage mailMessage;
	
	public MailSender(){
		super();
	}
	
	public MailSender(Sender sender, Client client, MailMessage mailMessage) {
		this.sender = sender;
		this.client = client;
		this.mailMessage = mailMessage;
	}

	public void sendMessage() {
		StringBuilder sb = new StringBuilder();		
		try {
			
			Properties props = new Properties();
			
			props.put("mail.smtp.host", sender.getServer());
			props.put("mail.smtp.auth", sender.getAuth());
			
			 Authenticator auth = new Authenticator() {
				    public PasswordAuthentication getPasswordAuthentication() {
				      return new PasswordAuthentication(sender.getUsername(),sender.getPassword());
				    }};			
			
			Session session = Session.getInstance(props, auth);
			 
			MimeMessage message = new MimeMessage(session);			 
			
			message.setFrom(new InternetAddress(sender.getEmail()));
			
			Address toAddress = new InternetAddress(client.getEmail());
			
			message.addRecipient(Message.RecipientType.TO, 
								 toAddress);
			 
			message.setSubject(mailMessage.getSubject());
			 
			message.setContent(mailMessage.getMessage(), 
							   mailMessage.getEncType());
			 
			Transport.send(message);
			sb.append("E-mail enviado com sucesso para: ");
			sb.append(client.getEmail());
			System.out.println(sb.toString());
			sb.setLength(0);
		}
		catch (MessagingException ex) {
			sb.append("Email nao pode ser enviado, erro: ");
			sb.append(ex.getMessage());
			System.out.println(sb.toString());
		}

	}
	
}
E

Primeiramente coloca o código na tag code, e depois “Debuga” e fala qual linha está dando erro.

T

Seu exemplo clareou um pouco, fabioZanardi. Mas agora preciso que vc me de um exemplo mais específico pro hotmail!

<code>
//já clareou bastante, mas ainda preciso que você seja mais específico pro hotmail.
</code>

carlosjrcabello

telionatic:
Seu exemplo clareou um pouco, fabioZanardi. Mas agora preciso que vc me de um exemplo mais específico pro hotmail!

<code>
//já clareou bastante, mas ainda preciso que você seja mais específico pro hotmail.
</code>

Bom dia,

Só é necessário usar a classe acima passando os parâmetros do Sender com as definições para a Hotmail …

fabiozanardi

Jóia, mude o titulo para resolvido

abraço

Criado 2 de março de 2012
Ultima resposta 7 de mar. de 2012
Respostas 5
Participantes 4