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

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



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: