Gente estou tentando fazer um teste em enviar emails através de uma aplicacao java usando emails comuns
o meu codigo de email é esse
por enquanto alguem ai tem uma ideia de como posso fazer pra funcionar isso?
obrigada.
[code]import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.JFrame;
public class email{
private static EntityManagerFactory fabricaDeEntidades = null;
private static EntityManager gerenciador = null;
public static void main(String[] args) {
fabricaDeEntidades = Persistence
.createEntityManagerFactory("TurmaN40PostgreSQL");
gerenciador = fabricaDeEntidades.createEntityManager();
// configurando nossa mensagem
try {
ConfiguraEmail();
System.out.print(“Email-> Enviado com sucesso”);
} catch (MessagingException ex) {
Logger.getLogger(email.class.getName()).log(Level.SEVERE, null, ex);
System.out.print(“Erro ao enviar, verifique, senha, sua conexão e tente novamente”);
}
}
public static void ConfiguraEmail() throws MessagingException {
// seta o servidor de email
Properties props = new Properties();
props.put (“mail.smtp.host”, “mail.hotmail.com”);
props.put(“mail.smtp.auth”, “false”);
// cria uma sessao com o servidor de email
Session mailSession = Session.getDefaultInstance(props, null);
// Mostra detalhes do envio da mensagem, quando (true)
mailSession.setDebug(false);
Message msg = new MimeMessage(mailSession);
// Subject = ASSUNTO
msg.setSubject(“oi”);
// FROM = de esta enviando //
InternetAddress from = new InternetAddress("dfodani@hotmail.com");
msg.setFrom(from);
// PARA QUEM recebe //
InternetAddress[] address = {new InternetAddress("dfodani@hotmail.com")};
msg.setRecipients(Message.RecipientType.TO, address);
// conteudo
msg.setContent(“oi”, “text/plain”);
// Executa finalmente o envio!
Transport.send(msg);
}
}
[/code]
apresenta este erro
26/06/2012 19:19:35 email main
GRAVE: null
javax.mail.MessagingException: Could not connect to SMTP host: mail.hotmail.com, port: 25;
nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at email.ConfiguraEmail(email.java:57)
at email.main(email.java:29)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
… 8 more
Erro ao enviar, verifique, senha, sua conexão e tente novamente
Parece que deu erro na conexão ao host smtp
O nome é esse mesmo.
voce tem ideia de como fazer isso funcionar?
Dá para tentar acessar esse host ?
O erro parece ser de não conseguir acessá-lo.
consegui aqui de outro jeito obrigada xD
neste artigo eu peguei esse codigo ai e funfo mais tenho outro problema que depois vou postar aqui o certo seria usar um if else como nao sei :X
em outro exemplo que vou pedi ajuda aqui mesmo :X
o smtp do hotmail não é pelo live.com?
mail.hotmail.com acho que não existe, por isso do erro.
e verifique a porta tb…
surgiu outra duvida esse é o botao que envia o email eu quero que quando ele selecione no jcombobox hotmail mande para o hotmail conforme abaixo senao manda pro gmail acho que o meu if e else ta entrando errado voces poderiam verifica?
[code]botao1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Persistir dados
// inclusão de um novo registro
JComboBox Hotmail = null;
if(j==Hotmail){
Properties props = new Properties();
/** Parâmetros de conexão com servidor Hotmail */
props.put(“mail.transport.protocol”, “smtp”);
props.put(“mail.smtp.host”, “smtp.live.com”);
props.put(“mail.smtp.socketFactory.port”, “587”);
props.put(“mail.smtp.socketFactory.fallback”, “false”);
props.put(“mail.smtp.starttls.enable”, “true”);
props.put(“mail.smtp.auth”, “true”);
props.put(“mail.smtp.port”, “587”);
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(caixa1.getText(),caixa6.getText());
}
});
/** Ativa Debug para sessão */
session.setDebug(true);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(caixa1.getText())); //Remetente
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(caixa2.getText())); //Destinatário(s)
message.setSubject(caixa3.getText());//Assunto
message.setText(caixa4.getText());
/**Método para enviar a mensagem criada*/
Transport.send(message);
System.out.println("Feito!!!");
} catch (MessagingException e1) {
throw new RuntimeException(e1);
}
}else{
final String username = caixa1.getText();
final String password = caixa6.getText();
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(caixa1.getText()));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(caixa2.getText()));
message.setSubject(caixa3.getText());
message.setText(caixa4.getText());
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e1) {
throw new RuntimeException(e1);
}
}
}
}); [/code]
Esse j é o que ?
if(j==Hotmail){
O j não está sendo declarado.
Se você quer pegar o que vem do jcombobox o método é getSelectedIndex(). Esse método retorna um object, do qual você irá que transformar para o tipo que o combobox foi adicionado.
Uma dica - Coloque nomes de variáveis significativos.
Caixa 1 e caixa 6 não indicam muita coisa. Se uma pessoa ver isso não irá entender o que são.
Outra dica - Você repete a seguinte parte para cada tipo de e-mail, sendo que o código é o mesmo.
Imagina se tivesse que criar outro e-mail, por exemplo, yahoo.
Por isso poderia colocar o if para pegar o e-mail em cima, e depois de você pegar os dados você chama essa parte de enviar o e-mail e só atribui os atributos atribuídos antes.
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(caixa1.getText(),caixa6.getText());
}
});
/** Ativa Debug para sessão */
session.setDebug(true);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(caixa1.getText())); //Remetente
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(caixa2.getText())); //Destinatário(s)
message.setSubject(caixa3.getText());//Assunto
message.setText(caixa4.getText());
/**Método para enviar a mensagem criada*/
Transport.send(message);
System.out.println("Feito!!!");
} catch (MessagingException e1) {
throw new RuntimeException(e1);
}
entao brigadao ta tudo certo