[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: "+ou-Resolvido" Help com email em script???



a versao do mailx que estou rodando é essa aqui: 12.1 6/15/06
o from ta funcionando bem aqui com o mailx. Mas na verdade ele só muda o campo from mesmo, prq todos o resto é feito com meu agente local. Por isso alguns servidores bloqueiam ip dinamico nao recebem minhas mensagens mesmo mudando o campo from, com isso vou testar esse método de autenticacao que vc esta me aconselhando.

>O que acha? Vale a pena implementar?

to achando muito legal, vale implementar sim, vai dar um pouco de trabalho, mas vou ter maior controle das rotinas do envio de mensagens no script. Agora com relacao ao sed removendo os "<>" tags do html fica legal, mas mata código html, aquele anterior com php nesse caso fica mais bacana.
Mas muito grato mesmo pelo auxilio.
Grande abraco, t+



On 28/02/2008, Junior Polegato - Linux <linux@juniorpolegato.com.br> wrote:
plebeo escreveu:

> Só conlcuindo aí, testei com o php e funcionou tb.
>

>     On 27/02/2008, *Junior Polegato - Linux*
>     <linux@juniorpolegato.com.br <mailto:linux@juniorpolegato.com.br>>

>     wrote:
>
>         Você não pode fazer isso em PHP?
>
>         php -r '$remetente = "Junior <junior@umservidor.com.br

>         <mailto:junior@umservidor.com.br>>"; $destinatario

>         = "Clicano <clicano@outroservidor.com.br

>         <mailto:clicano@outroservidor.com.br>>"; $assunto = "Assunto da

>         mensagem"; $arquivo_html = "/caminho/arquivo/html";
>         $arquivo_aberto =
>         fopen($arquivo_html, "r"); $mensagem_html = fread($arquivo_aberto,
>         filesize($arquivo_html)); fclose($arquivo_aberto);
>         mail($destinatario,
>         $assunto, $mensagem_html, "From: ".$remetente."\nContent-Type:
>         text/html; charset=UTF-8");'
>


Olá,

       Legal! Mas em se tratando de usar mailx, até onde eu sei, este
não suporta por padrão autenticação SMTP e nem esse from=, qual versão
está usando?

$ dpkg -l "*mailx*"|grep ii
ii  bsd-mailx
8.1.2-0.20071201cvs-2            A simple mail user agent
ii  mailx
1:20071201-2                     Transitional package for mailx rename

       Outra alternativa, para não depender de pacotes ou de PHP ou
outro que seja, é fazer a autenticação na unha, cujo algoritmo não é tão
complicado:

// Conectar
socket = conectar_por_socket(Servidor, Porta);
esperar_reposta(socket, "220");
// verificar se conectou e se espera por autenticação
enviar(socket, "EHLO ", Servidor);
espera_por_autenticação = esperar_reposta(socket, "250", verdadeiro);
// Autenticar se espera por autenticação
se (espera_por_autenticação)
    enviar(socket, "AUTH LOGIN");
    esperar_resposta(socket, "334");
    enviar(socket, base64(Usuario));
    esperar_resposta(socket, "334");
    enviar(socket, base64(Senha));
    esperar_resposta(socket, "235");
// Verificar se está passando sem autenticação
senão
    enviar(socket, "HELO ", Servidor);
    esperar_resposta(socket, "250");
// Dados requeridos para enviar e-mail: remetente, destinatário e dados
enviar(socket, "MAIL FROM: ", Remetente);
esperar_resposta(socket, "250");
enviar(socket, "RCPT TO: ", Destinatario);
esperar_resposta(socket, "250");
enviar(socket, "DATA");
esperar_resposta(socket, "354");

// Agora sim vem o e-mail, sendo o cabeçalho separado do corpo pela
primeira linha em branco

// Cabeçalho
enviar(socket, "From: ", Remetente);
enviar(socket, "To: ", Destinatario);
enviar(socket, "Subject: ", Assunto);
enviar(socket, "User-Agent: Envmail - Junior Polegato - v0.1");
enviar(socket, "MIME-Version: 1.0");
enviar(socket, "Content-Type: multipart/alternative;");
enviar(socket, "boundary=\"separador_de_partes_deste_e-mail\"");
enviar(socket, "");
enviar(socket, "This is a multi-part message in MIME format.");
enviar(socket, "--separador_de_partes_deste_e-mail");
enviar(socket, "Content-Type: text/plain; charset=UTF-8; format=flowed");
enviar(socket, "Content-Transfer-Encoding: 7bit")
// Aqui poderia enviar a parte texto
// enviar(socket, Corpo_Texto);
enviar(socket, "");
enviar(socket, "Este é um teste de envio em *HTML*!");
enviar(socket, "");
enviar(socket, "--separador_de_partes_deste_e-mail");
enviar(socket, "Content-Type: text/html; charset=UTF-8");
enviar(socket, "Content-Transfer-Encoding: 8bit");
enviar(socket, "");
// Aqui poderia enviar a parte texto
// enviar(socket, Corpo_HTML);
enviar(socket, "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01
Transitional//EN\">");
enviar(socket, "<html>");
enviar(socket, "<head>");
enviar(socket, "</head>");
enviar(socket, "<body>");
enviar(socket, "Este &eacute; um testes de envio em <b>HTML</b>!<br>");
enviar(socket, "</body>");
enviar(socket, "</html>");
enviar(socket, "");
enviar(socket, "--separador_de_partes_deste_e-mail--");
// Final do e-mail entendido pelo servidor
enviar(socket, "");
enviar(socket, ".");
esperar_resposta(socket, "250");
// Fecha a conexão
enviar(socket, "QUIT");
desconectar_por_socket(socket);


O arquivo texto pode ser gerado a partir do HTML assim:

sed 's/<[/]*b>/*/g;s/<[^>]*>//g;/^[ \t]*$/d' arquivo.html > arquivo.txt


O que acha? Vale a pena implementar?


--

Atenciosamente,

           Junior Polegato

           Um peregrino de problemas; Um pergaminho de soluções!
           Página Profissional: http://www.juniorpolegato.com.br



Reply to: