Java Mail API Enviar e-mails da propria maquina

6 respostas
G

Pessoal,

Gostaria de confirmar se é de fato possível enviar e-mails setando a máquina que a minha classe java estiver rodando como remetente e enviar o email… sem necessidade de configurar um servidor smtp para envio, sei que o problema disso é que por não ter um IP válido meu e-mail provavelmente será bloqueado.

eu vi essa informação em outro forum onde o rapaz falava q com o Java Mail era possível fazer isso, mas não deu muitos detalhes, alguém já fez algo parecido, seja com java mail ou outra API?

6 Respostas

G
Pessoal, estudando o java mail cheguei no seguinte:
package controller;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendMail{
	private String to, from, host;
	private Properties properties;
	private Session session;
	public SendMail(){
		
	}
	public void enviar(){
      to = "[email removido]";
      from = "[email removido]";
      host = "localhost";
      
     properties = System.getProperties();
     properties.setProperty("mail.smtp.host", host);
     
     session = Session.getDefaultInstance(properties);

      try{
         MimeMessage message = new MimeMessage(session);
         
         message.setFrom(new InternetAddress(from));
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
         message.setSubject("teste");
         message.setText("teste de envio");
         // enviando o email
         Transport.send(message);
         System.out.println("Email enviado com sucesso");
      }catch (MessagingException e) {
         e.printStackTrace();
      }
   }
	
	public static void main(String args[]){
		SendMail email = new SendMail();
		email.enviar();
	}
}
porém recebo o erro abaixo :
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is:
	java.net.ConnectException: Connection refused
	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 controller.SendMail.enviar(SendMail.java:32)
	at controller.SendMail.main(SendMail.java:41)
Caused by: java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
	at java.net.Socket.connect(Socket.java:546)
	at java.net.Socket.connect(Socket.java:495)
	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

acredito que da forma como está ele está tentando usar a minha maquina mas acreditando que há um servidor smtp instalado.... e minha intenção é enviar sem essa necessidade.

alguém ajuda?

R

Pelo que sei vc precisa de um servidor de emails para enviar um email. Ou vc usa um servidor tipo gmail, hotmail, ou usa o próprio da empresa por exemplo. Mas no fim das contas, precisa de um servidor, pq quem vai enviar o email é o servidor. O javamail só vai preparar a mensagem para você, dai se comunica com o servidor e faz e ele envia. Pelo menos entendo que é assim que funciona.

G

Cara, pesquisando encontrei essa informação:

"Alexandre Machado [email removido] wrote: Você pode usar a Java Mail API
para fazer o envio direto (direct delivery). Porém, a não ser que a máquina que roda o seu programa for o MX (Mail Exchanger) do domínio do qual os e-mails partem, a maioria dos servidores com filtro anti-spam vai barrá-los.

Alexandre

Em 16/12/05, Glauber Pires escreveu:

Pessoal,

Estou precisando enviar emails diretamente, fiz uma aplicação de teste com o commons-email da jakarta e tá funcionando blz com o programa “Free SMTP Server” e colocando no HostName “localhost”.

Queria saber como faço para enviar os e-mails diretamente (fazer o papel do Free SMTP Server"), alguém sabe de alguma lib boa e pequena para fazer isso?

Obrigado "

link http://markmail.org/message/t7427qh3wl6gtvbd

tipo, aí o rapaz fala que é possível fazer isso com o Java Mail, apenas n consegui descobri onde setar essa opcao Direct Delivery =/

R

Procurei sobre isso e não encontrei nada, nem da documentação do javamail fala alguma coisa sobre isso.

K

Neste post ele fala sobre isso que você esta procurando

vê se te ajuda

G

Bom, optei por utilizar linux e subi um serviço smtp na minha máquina, o problema é que quando mando pro Gmail cai na caixa de spam e no hotmail o e-mail se quer chega! deve ser o tal de black list pros IPs que o povão acessa, tem alguma forma de contornar isso???

Criado 27 de fevereiro de 2011
Ultima resposta 10 de mar. de 2011
Respostas 6
Participantes 3