Pessoal, achei muito legal esse forum, mas sou novato e estou desenvolvendo uma aplicação em que precisa mandar email. Eu baixei o .zip do commons mail e gostaria de saber como instalar/utilizar para enfim poder estudar esse fórum. Obrigado.
Desculpe reviver o tópico depois de tanto tempo mas talvez a minha resposta ajude outras pessoas que caírem aqui.
Cassitos isso acontece pois o gmail e hotmail não aceitam envio de mensagens html no corpo do email, algumas versões do outlook e alguns servidores de email próprios para este tipo de envio (geralmente servidores de email marketing) permitem que vc envie codigo html no corpo do email.
Farzac esse erro ocorreu pois o endereço de smtp que vc está utilizando está incorreto ou não lhe dá permissão para ser usado, recomendo usar o do gmail ou do uol.
Abraço.
[quote=Joaozava]Tentei rodar o exemplo acima e deu esse erro, alguém sabe porque?
Estou usando o eclipse e relacionei o jar no meu Build Path, não estou entendendo.
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message
at CommonsMail.enviaEmailSimples(CommonsMail.java:24)
at CommonsMail.<init>(CommonsMail.java:13)
at CommonsMail.main(CommonsMail.java:117)
a linha 24 é:
SimpleEmail email = new SimpleEmail();
Obrigado![/quote]
Amigo, você conseguiu resolver esse problema? esta dando esse erro pra mim também!
Me ajuda por favor?
Oi Wesleyobs,
Esse erro acontece pois está faltando o jar na pasta lib do projeto, vc pode resolver importando a biblioteca com os jars referentes ao simple mail pro seu projeto ou copiando e colando os jars diretamente na pasta onde estão os outros jars.
Verifique e poste aí o código da classe problemática caso não tenha resolvido.
Abs.
ww.raulferreira.com.br
[quote=raulsenaferreira]Oi Wesleyobs,
Esse erro acontece pois está faltando o jar na pasta lib do projeto, vc pode resolver importando a biblioteca com os jars referentes ao simple mail pro seu projeto ou copiando e colando os jars diretamente na pasta onde estão os outros jars.
Verifique e poste aí o código da classe problemática caso não tenha resolvido.
Abs.
ww.raulferreira.com.br[/quote]
Bom dia raulferreira.
Oi Wesley,
faça o seguinte:
crie uma nova classe e copie e cole os códigos abaixo e faça um teste:
- colocamos uma ação no botão que enviará o email
try {
enviaEmailComAnexo();
} catch (EmailException ex) {
Logger.getLogger(EnviaEmail.class.getName()).log(Level.SEVERE, null, ex);
}
2)Colocamos uma ação no botão que anexa arquivos (JFileChooser), criei um textField e chamei de jTFAnexar
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(null);
File file = fileChooser.getSelectedFile();
if (file != null && result == JFileChooser.APPROVE_OPTION) {
jTFAnexar.setText(file.getAbsolutePath());
}
3)Criamos a função de envio de emails (com ou sem anexo) que foi descrita no passo 1
[code]public void enviaEmailComAnexo() throws EmailException{
// cria o anexo.
EmailAttachment anexo = new EmailAttachment();
anexo.setPath(jTFAnexar.getText());
//informações do destinatário
destinatario ="email do destinatario";// coloque aqui o email do destinatario - MODIFIQUE AQUI
nick = "nome do destinatario"; // coloque aqui o nome do destinatario - MODIFIQUE AQUI
//se não houver anexo no email
if(jTFAnexar.getText().equals("")){
// configura o email
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail
email.addTo(destinatario, nick); //destinatário
email.setFrom("coloqueaquiseuemail@gmail.com", "Seu Nome"); // remetente - MODIFIQUE AQUI
email.setSubject("assunto do e-mail"); // MODIFIQUE AQUI
email.setMsg("conteudo do e-mail"); //MODIFIQUE AQUI
email.setAuthentication("usuariodoemail", "senhadoemail");// MODIFIQUE AQUI
email.setSmtpPort(465);
email.setSSL(true);
email.setTLS(true);
// envia o email
email.send();
JOptionPane.showMessageDialog(null, "Mensagem enviada para "+ nick +" - "+ destinatario +" com sucesso!!");
}
else{//se houver anexo na mensagem
anexo.setDisposition(EmailAttachment.ATTACHMENT);
anexo.setDescription("Contém arquivo anexado");
anexo.setName("Titulo - Anexo");
// configura o email
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail
email.addTo(destinatario, nick); //destinatário
email.setFrom("seumail@gmail.com", "seu nome");//MODIFIQUE AQUI
email.setSubject("assunto do e-mail"); // MODIFIQUE AQUI
email.setMsg("conteudo do e-mail"); // MODIFIQUE AQUI
email.setAuthentication("usuario", "senha");//MODIFIQUE AQUI
email.setSmtpPort(465);
email.setSSL(true);
email.setTLS(true);
// adiciona arquivo(s) anexo(s)
email.attach(anexo);
// envia o email
email.send();
JOptionPane.showMessageDialog(null, "Mensagem enviada para "+ nick +" - "+ destinatario +" com sucesso!!");
}
}[/code]
Não se esqueça de incluir no início os imports:
[code]import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;[/code]
Faça as substituições necessárias no passo 3, colocando os seus dados e faça o teste, se der erro posta aqui.
OBS: Eu uso esse código em programa desktop com BD embarcado, ou seja, ele funciona em qualquer lugar, provavelmente funcionará para você tambem. O mesmo foi baseado em um código aqui mesmo do fórum.
Abs
www.raulferreira.com.br
linkedin: http://www.linkedin.com/in/raulsenaferreira
Como fazer para enviar anexos que estão em memória e não arquivo físico?
Cara eu tenho um arquivo html e um jpeg como faço para enviar eles no corpo do email com o commons- email . grato
Mano, usa o código abaixo que vc se dá bem
[code]public static void enviarEmail(String titulo, String mensagem,
String destinatario, byte[] anexo, String nomeDoArquivo,
FormatosDeArquivo formatoDoArquivo) throws Exception,
MensagemException {
if (Caracter.stringIsNullOrEmpty(destinatario))
throw new MensagemException(
Mensagens
.getMensagem("O e-mail de destino não foi informado."));
if (anexo == null || anexo.length == 0)
throw new MensagemException(
Mensagens.getMensagem("O anexo está vazio."));
MultiPartEmail email = new MultiPartEmail();
email.setHostName(smtp);
email.setSmtpPort(587);
email.setTLS(true);
email.setFrom("email@email.com.br", "assunto");
email.setAuthenticator(new DefaultAuthenticator(userName, password));
email.setSubject(titulo);
email.setMsg(mensagem);
email.addTo(destinatario);
ByteArrayDataSource source = new ByteArrayDataSource(anexo,
Caracter.getContentType(formatoDoArquivo));
email.attach(source, nomeDoArquivo, "");
email.send();
}[/code]
Mas esse código não vai colocar eles no anexo e não no corpo do email como os newsletters de lojas.
Daria para enviar um email para vários destinatários com o org.commons mail. grato
Bom dia,
estou tentando enviar um e-mail de teste mas não consigo de jeito nenhum.
[code] private void EnviarEmail() throws EmailException{
SimpleEmail email = new SimpleEmail();
email.setHostName(“smtp.mail.yahoo.com.br”);
email.setFrom("marcosacsj@yahoo.com.br");
email.setAuthenticator(new DefaultAuthenticator("marcosacsj", "xxxx"));
email.addTo("marcosacsj@yahoo.com.br");
email.setSmtpPort(587);
//email.addCc("someone2@somedomain.com");
//email.addBcc("someone3@somedomain.com");
email.setSubject("Meu primeiro e-mail");
email.setMsg("Olá, estou usando o Commons E-mail API!");
email.setSSL(true);
email.setTLS(false);
email.send();
}
[/code]
e o erro q está dando é
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.mail.yahoo.com.br:587
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
at org.apache.commons.mail.Email.send(Email.java:1267)
at javaapplication7.tela.EnviarEmail(tela.java:150)
alguem poderia me ajudar?
BOM DIA!!!
Gostei desse recurso de enviar email, senti facilidade de implementar … já utilizei muito isso no PHP. Porém… agora estou trabalhando com uma rede que está monitorada por um servidor PROXY onde preciso autenticar
IP-DO-SERVIDOR-PROXY ... PORTA-DO-SERVIDOR-PROXY.
DOMINIO/USUARIO-DE-REDE e ... SENHA-DE-REDE.
Teria como fazermos isso para a máquina/servidor interno enviar o email?
Obrigadão!!!
to querendo saber tbm…
acho q por isso da esse erro:
Exception in thread "main" org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1401)
at org.apache.commons.mail.Email.send(Email.java:1428)
at br.com.cdi.admlog.test.CommonsMail.enviaEmailSimples(CommonsMail.java:45)
at br.com.cdi.admlog.test.CommonsMail.<init>(CommonsMail.java:24)
at br.com.cdi.admlog.test.CommonsMail.main(CommonsMail.java:128)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
Caused by: java.net.ConnectException: Connection timed out: connect
[size=12]Could not connect to SMTP host: smtp.gmail.com, port: 465[/size]
[size=18]Could not connect to SMTP host: smtp.gmail.com, port: 465[/size]
[size=24]Could not connect to SMTP host: smtp.gmail.com, port: 465[/size]
Tente a porta 587.
Abs []
já tentei…
eu acho que é pq estou na empresa o glassfish deve ter q ser configurado de acordo com o servido de desenvolvimento
vo testar em casa… quando der