JSP - Enviar e-mail com qualquer SMTP

Enviar email com JSP sem pedir smtp

Tem como pessoal?

Em php estou acostumado com tantas maneiras que até já criei as minhas.
Mas em JSP só obtive uma e mesmo assim não está reconhecendo o método sendSimplemail()

Eu uso o NetBeans 6.1 com as atualizações frequentes.

O código é este aqui:

try { String mailServer = "mail.localhost:8084.com"; String assunto = request.getParameter("assunto"); String para = request.getParameter("meuemail@meuservidor.com.br"); String de = request.getParameter(name); String mensagem = request.getParameter("mensagem"); email.sendSimpleMail(mailServer, assunto, para, de, mensagem); // não reconhece o método sendSimpleMail() out.println("<p>Email enviado com Sucesso !!!</p>"); } catch (AdressException e) { out.println("<p>Endereço de Email inválido!</p>"); } catch (MessagingException e) { out.println("<p>Impossível enviar o email!</p>"); } } else { out.println("<b>falso</b></p>"); }

Baixei o arquivo javamail-1.4.2.zip e estou utilizando o jar mail.jar baixado em:
Download JavaMail™ API 1.4.2 for Generic, English

Agradeço a ajuda de vocês!

Até.

Olá

Tente ver nestes post, acho que pode te ajudar:
- http://www.guj.com.br/posts/list/87637.java
- http://www.guj.com.br/article.show.logic?id=21

Espero ter ajudado
Flwsss

Sim, vai ajudar, só que não tem uma maneira de como fazer isso na própria página JSP sem precisar criar nenhuma classe Java?

E também postei esse código aí, só que tem apenas um problema nele, não dava pra alguém me explicar o quê preciso fazer para poder utilizá-lo?

Obrigado.

Sobre este artigo: http://www.guj.com.br/article.show.logic?id=21

Implementei como no artigo mas não recebi o e-mail. Testei já no servidor Web e informei o smtp corretamente mas no tratamento do form, passou direto e acho q nada aconteceu ao tentar enviar o email.

O código:

[code]Properties prop = new Properties();
prop.put(“mail.host”, “smtp.meusite.com.br”);
Session sessionMail = Session.getInstance(prop, null);
MimeMessage msg = new MimeMessage(sessionMail);

   try {
// "de" e "para"!!
msg.setFrom(new InternetAddress(nome));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("suporte@meusite.com.br"));

// nao esqueca da data!
// ou ira 31/12/1969 !!!
msg.setSentDate(new Date());
msg.setSubject("assunto da mensagem");
msg.setText("corpo da mensagem");
// evniando mensagem (tentando)
Transport.send(msg);
   }
   catch (AddressException aEx) {
       // nunca deixe catches vazios!
       out.println(aEx);
   }
   catch (MessagingException mEx) {
       // nunca deixe catches vazios!
       out.println(mEx);
   }[/code]

tentei com o commons mas retornou a mensagem de erro:
[b]Erro no servidor!

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.ffcriacoes.com.br:25 [/b]

source

// enviando e-mail para o usuário informando que seu cadastro foi concluído SimpleEmail mail = new SimpleEmail(); mail.setHostName("smtp.ffcriacoes.com.br"); mail.addTo("suporte@ffcriacoes.com.br", "Novo email vindo de MedCultura"); mail.setFrom(email, nome); mail.setSubject("MedCultura - Informativo"); mail.setMsg("Olá <b>"+nome+"</b>,\nSeu cadastro no site <b>www.medcultura.com.br</b> foi concluído com sucesso!</b>"); mail.send();

Agradeço a ajuda.

  • edit: Título modificado.

Já tentou isto:

[code]<%@ page import = “java.util.Properties, javax.mail., javax.mail.internet.,
javax.activation., java.io., javax.servlet., javax.servlet.http.” %>
<%
try {

String to = “suporte@ffcriacoes.com.br”;
String from = request.getParameter("seumail@hotmail.com");

Properties props = new Properties();
props.put(“mail.smtp.host”, “ffcriacoes.com.br”);

Session sessao = Session.getInstance(props);
sessao.setDebug(true);

MimeMessage message = new MimeMessage(sessao);

message.setFrom(new InternetAddress(from));
Address toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);

message.setSubject(request.getParameter(“assunto”));
message.setText(request.getParameter(“comenta”));

Transport.send(message);
out.println("


");
out.println("");
out.println("

");
out.println("");
out.println(“Sua mensagem foi enviada com sucesso.

Em breve responderemos, Obrigado!”);
out.println("");
out.println("");
}
catch (MessagingException e) {
out.println("Email nao pode ser enviado! Verifique se preencheu os campos corretamente! " + e.getMessage());
}
%>[/code]

Caso não dê certo, então não sei.
Mas responde, seu servidor possui suporte a smtp?

Caras, acho q é problema na configuração mesmo, tipo, tentei com este código:

http://wiki.locaweb.com.br/pt-br/Como_enviar_e-mails_com_JavaMail, lá embaixo tem uma maneira de tratar o form com JSP, só que dá essa excessão:

[quote][b]HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /testeEnviaMail.jsp at line 17

14:
15: MimeMessage message = new MimeMessage(sessao);
16:
17: message.setFrom(new InternetAddress(from));
18: Address toAddress = new InternetAddress(to);
19: message.addRecipient(Message.RecipientType.TO, toAddress);
20:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
[/b][/quote]

Isso foi quando tentei configurar a meu modo, mas com o código original mostra essa:

Email nao pode ser enviado! Verifique se preencheu os campos corretamente! Could not connect to SMTP host: localhost, port: 25 

Vamos por partes, como configuro este código corretamente:

[code]<%@ page import = “java.util.Properties, javax.mail., javax.mail.internet.,
javax.activation., java.io., javax.servlet., javax.servlet.http.” %>
<%
try {

String to = “suporte@ffcriacoes.com.br”;
String from = request.getParameter(“de”);

Properties props = new Properties();
props.put(“mail.smtp.host”, “localhost”);

Session sessao = Session.getInstance(props);
sessao.setDebug(true);

MimeMessage message = new MimeMessage(sessao);

message.setFrom(new InternetAddress(from));
Address toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);

message.setSubject(request.getParameter(“assunto”));
message.setText(request.getParameter(“comenta”));

Transport.send(message);
out.println("


");
out.println("");
out.println("

");
out.println("");
out.println(“Sua mensagem foi enviada com sucesso.

Em breve responderemos, Obrigado!”);
out.println("");
out.println("");
}
catch (MessagingException e) {
out.println("Email nao pode ser enviado! Verifique se preencheu os campos corretamente! " + e.getMessage());
}
%>[/code]

att

Uma dica que sempre dou: vá até o servidor onde o programa deve rodar, e tente configurar um software como o Outlook Express ou o Mozilla Thunderbird para enviar emails. (Não estou falando de Outlook normal, ou de Lotus Notes, porque pode ser que você consiga até enviar emails, mas usando um protocolo diferente de SMTP, o que não interessa no caso de vocês).

Isso quer dizer que você vai ter de obter (com o administrador de rede) quais são os parâmetros adequados para enviar emails.

Se conseguir enviar algum email para um destinatário qualquer usando algum desses softwares, então copie os parâmetros para sua configuração e boa sorte!

Senão, você vai ter de ver com seu administrador de rede tudo que é necessário para fazer o tal software funcionar. Por exemplo, talvez seja necessário abrir alguma porta no firewall, ou coisa parecida.

Dica: normalmente host=localhost com porta 25 nunca funciona, exceto se seu servidor tiver um SMTP Server e ele aceitar “relaying”, o que normalmente nunca é habilitado. Procure os parâmetros adequados.

Cara, muito obrigado.

[quote=thingol]Isso quer dizer que você vai ter de obter (com o administrador de rede) quais são os parâmetros adequados para enviar emails.
[/quote]

Cara, vc deve pensar q não ajudou muito, mas se eu não fosse checar com o pessoal do servidor o porquê de está gerando excessões eu não resolveria.

Ele me indicou uma configuração que faltava, esta é particular ao servidor mesmo.

Obrigado mais uma vez.

Tava bom demais…

Sobre o artigo, consegui enviar a partir do código:

http://www.guj.com.br/article.show.logic?id=21

Só que

Tentei setar encoding iso no assunto mas isso gera erro depois.

  • PS: Já entendi, o assunto não aceita acento ou cedílha mesmo.

ATT.

Tentei modificar a codificação, mas não resolveu.

É apenas a linha do assunto que precisa, pois é somente ela quem precisa mudar de codificação.

message.setSubject(request.getParameter(“assunto”));

Qual método usa-se para isso?

Obrigado.

up
como posso resolver esse problema de codificação do assunto dos e-mails?

isso acontece apenas nos e-mail da hotmail e yahoo.

tanks.