TaoOo Posted November 13, 2006 at 04:11 AM Report #64051 Posted November 13, 2006 at 04:11 AM boa noite, tenho necessidade de criar um programa que envie e-mails para uma determinada lista num determinado dia ( tipo uma lembrança ). o problema é que não faço ideia que classes podem ser utilizadas/necessárias para o envios de e-mails. se alguem souber gostaria que me dessem umas "luzes" acerca de como funcionam estas ... obrigado TaoOo
Dabubble Posted November 13, 2006 at 10:47 AM Report #64059 Posted November 13, 2006 at 10:47 AM Puro e duro. Mails simples usando as libs da sun que vem com o JDK. // Substituir o IP pelo IP do servidor SMTP SmtpClient smtpClient = new SmtpClient("192.168.0.1"); smtpClient.from("origemxpto@xpto.com"); smtpClient.to("destinoxpto@xpto.com"); PrintStream message = smtpClient.startMessage(); message.println("To: destinoxpto@xpto.com"); message.println("Subject: A friendly mail message"); message.println(); message.println("Hello mail messages world!"); message.println(); message.println(); smtpClient.closeServer(); PS: Fiz uma ou duas correccoes de pormenor ao post inicial
Gurzi Posted November 14, 2006 at 11:38 AM Report #64263 Posted November 14, 2006 at 11:38 AM neste código nao preciso de fazer import de nada ?
Hipnoted Posted November 14, 2006 at 11:41 AM Report #64265 Posted November 14, 2006 at 11:41 AM neste código nao preciso de fazer import de nada ? Em principio é, não sei de côr nem tenho aqui a API Java à mão mas deve ser preciso importar as bibliotecas de sockets. Digo eu... "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
TaoOo Posted November 14, 2006 at 11:49 AM Author Report #64266 Posted November 14, 2006 at 11:49 AM hum.. ok muito obrigado, vou analizar isso kd tiver tempo e fazer uns testes, depois digo kk coisa.. ja agora, o ip do servidor é o ip do meu pc k está a fazer de servidor ou é o ip tipo do gmail, hotmail, etc ?? se for este ultimo caso como posso saber kual é o seu ip ? tks
Hipnoted Posted November 14, 2006 at 11:54 AM Report #64269 Posted November 14, 2006 at 11:54 AM ja agora, o ip do servidor é o ip do meu pc k está a fazer de servidor ou é o ip tipo do gmail, hotmail, etc ?? se for este ultimo caso como posso saber kual é o seu ip ? tks Depende do servidor que queiras testar. Se quizeres testar com o servidor local metes 127.0.0.1, se quizeres com outro servidor da internet metes o IP dele. Podes saber o IP através da resolução de nomes. "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
TaoOo Posted November 14, 2006 at 12:02 PM Author Report #64271 Posted November 14, 2006 at 12:02 PM nao percebi essa parte de saber o ip pela resolucao de nomes :| n faço ideia o k isso seja :S
Hipnoted Posted November 14, 2006 at 12:17 PM Report #64277 Posted November 14, 2006 at 12:17 PM nao percebi essa parte de saber o ip pela resolucao de nomes :| n faço ideia o k isso seja :S Vais à consola ou à linha de comandos e escreves: nslookup "nome do endereço que queres saber o IP" Ex: nslookup mail.google.com "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Dabubble Posted November 14, 2006 at 12:23 PM Report #64278 Posted November 14, 2006 at 12:23 PM Em vez de se escrever o IP pode-se escrever o nome (DNS) do servidor, é indiferente. Hotmail e Gmail não têm servidores SMTP, mas normalmente os ISPs têm. Não faço ideia dos imports porque o meu IDE gere isso tudo, so tive em atençao se pertenciam a alguma lib/framework macaca... 😛
Hipnoted Posted November 14, 2006 at 12:28 PM Report #64280 Posted November 14, 2006 at 12:28 PM Hotmail e Gmail não têm servidores SMTP, mas normalmente os ISPs têm. Estás enganado, pelo menos o Gmail tem. Sei disso porque uns colegas meus o ano passado tiveram de fazer um cliente de email em C e etstaram com o servidor de email do Gmail. "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
karva Posted November 14, 2006 at 12:33 PM Report #64281 Posted November 14, 2006 at 12:33 PM e mesmo hotmail pode ter integracao com mail clients Proud LEIC-A@IST student!
Gurzi Posted November 14, 2006 at 12:37 PM Report #64282 Posted November 14, 2006 at 12:37 PM nao percebi essa parte de saber o ip pela resolucao de nomes :| n faço ideia o k isso seja :S Vais à consola ou à linha de comandos e escreves: nslookup "nome do endereço que queres saber o IP" Ex: nslookup mail.google.com Fiz isso e deu-me Non-authoritative answer: mail.google.com canonical name = googlemail.l.google.com. Name: googlemail.l.google.com Address: 64.233.185.83 Name: googlemail.l.google.com Address: 64.233.185.19
Knitter Posted November 14, 2006 at 01:17 PM Report #64286 Posted November 14, 2006 at 01:17 PM Se queres usar o Gmail é mais fácil usares o nome, assim não tens de te preocupar. Coloca apenas o servidor de smtp que está indicado na página de configuração do google.
TaoOo Posted November 14, 2006 at 01:27 PM Author Report #64289 Posted November 14, 2006 at 01:27 PM 😛 nao consigo meter o codigo a funcionar.. tenho o seguinte: import java.io.PrintStream; import sun.net.smtp.SmtpClient; import java.util.*; public class SendEmail { public static String mailServer = "smtp.gmail.com"; public static void main(String[] args) { Scanner s = new Scanner(System.in); String dest, rem, subj, msg; rem="...@gmail.com"; dest="...@hotmail.com"; System.out.println("Remetente: "+rem); System.out.println("Destinatário: "+dest); System.out.print("Assunto: "); subj=s.next(); System.out.println(); System.out.println("Mensagem: ");msg=s.next(); try { SmtpClient smtpclient = new SmtpClient(mailServer); smtpclient.from(dest); smtpclient.to(rem); PrintStream printstream = smtpclient.startMessage(); printstream.println("To: " + dest); printstream.println("Subject: " + subj + "\n"); printstream.println(msg); smtpclient.closeServer(); System.out.println("ENVIADO COM SUCESSO"); } catch(Exception e) { System.out.println("FALHA AO ENVIAR!"); } } } falha aqui "smtpclient.from(dest); " .. nao consigo encontrar a classe smtpclient na API ...
Knitter Posted November 14, 2006 at 02:01 PM Report #64300 Posted November 14, 2006 at 02:01 PM Não creio que essa classe faça parte da API. Podes sacar o JavaMail, que é uma API opcional para trabalhar com escrita de mensagens http://java.sun.com/products/javamail/downloads/index.html, e que inclui classes para enviar mails por smtp, tens o problema de ser implementação da sun e não parte do Java. Ou podes usar a classe que tenho em anexo. EDIT: Altera a extensão do ficheiro para ".java" eu coloquei como ".zip" para enganar o SMF que não me estava a deixar colocar ficheiros com extensão ".java". É apenas uma classe não é um zip!
TaoOo Posted November 14, 2006 at 02:42 PM Author Report #64306 Posted November 14, 2006 at 02:42 PM obrigado, nao sabia isso do JavaMail... vou testar kd voltar a casa.. tks onde e como instalo o javaMail ? o .java k meteste em anexo fikou ilegivel, ou seja, fikou todo em 2 linhas de codigo, o k nao dá geito nenhum para analisar (se já estava assim peço desculpa 😛 )
Knitter Posted November 14, 2006 at 02:48 PM Report #64307 Posted November 14, 2006 at 02:48 PM Não sei para que queres mas não aconselho a usares implementações proprietárias. O teu programa deixa de ser multiplataforma. Se da JavaMail API usares apenas métodos que não venham do package sun.* ou org.* então tudo bem. No caso de precisares apenas da classe para enviar por SMTP então podes usar apenas a classe que coloquei em anexo.
Dabubble Posted November 14, 2006 at 03:04 PM Report #64310 Posted November 14, 2006 at 03:04 PM Nao sao packages proprietarias, pelo menos nao ja nao lol 😛 Essa classe ta no rt.jar que ja vem com o SDK 1.4.2 por isso.... Quanto ao problema de ser proprietario, nao me vao dizer que nao utilizam classes que vem com o SDK das quais nao tenham o codigo fonte, ja para nao falar que daqui a alguns meses vao ser todas open-source... TaoOo se tiveres um IDE normal e tiveres o JDK (nao sei se so a JRE basta) instalado deve ser uma questao de fazer organizar imports ou kk coisa do genero.
Dabubble Posted November 14, 2006 at 03:06 PM Report #64311 Posted November 14, 2006 at 03:06 PM Não sei para que queres mas não aconselho a usares implementações proprietárias. O teu programa deixa de ser multiplataforma. Explica la isto Knitter???? entao se tiveres implementacoes proprietaria o teu programa ja nao e multiplataforma???? tss tss, eu sei que enganaste, mas que calinada 😛 outra coisa packages que comecem por org* sao normalmente opensource.
Knitter Posted November 14, 2006 at 03:45 PM Report #64317 Posted November 14, 2006 at 03:45 PM Calinada?! Não vejo onde. Todos os packages fora da API do Java tornam o java não multiplataforma, isto é uma regra geral. Nada garante que as novas funcionalidades sejam 100% Pure Java, até a própria sun avisa isso. A única garantida de código multiplataforma é se usares código 100% Pure Java, nada te garante que uma implementação propriétaria o seja. Nada garante que a máquina virtual onde corras o código o consiga interpretar. A questão dos packages org.* serem open source não é bem verdade. O que eu tenho mais são exemplos de packages que não são open source e têm nomenclatura org.* Por isso é que existem convenções de código e por isso é que também existem muitas pessoas que não as seguem. Eu tenho o último jdk e também não consegui encontrar a classe. Mas posso ter falhado algures. Nem todas as classes vão passar a ser open source, apenas as da API oficial. E sim, só uso classes da API oficial, ou que são 100% Pure Java, o que é o mesmo que dizer que são compostas por classes da API oficial. Tudo o que comesse por sun.* é automáticamente excluído.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now