Envio de email via prompt windows 7

Overview

Em certas circunstâncias temos que testar o envio de e-mail via linha de comando de uma forma básica sem utilizar cliente de e-mail, com isto temos mais agilidade nos testes.

Solução

Para o teste de SMTP devemos utilizar somente o telnet que já vem com o Sistema Operacional.

Devemos ir em Start e depois em Run
E digitar cmd e OK
No prompt devemos digitar telnet 25
Devemos digitar Helo andersonpatricio.org (ou seu domínio que está enviando a mensagem)
Em seguida: mail from: anderson@andersonpatricio.org
Depois: rcpt to: anderson@quattuor.com.br, onde é o e-mail que está residente no servidor que estamos testando, no meu exemplo dei um telnet no servidor mail.quattuor.com.br e estou enviando um teste para anderson@quattuor.com.br
Devemos digitar data e depois para podermos escrever o e-mails, para terminar o corpo da mensagem temos que colocar um “.” em uma linha vazia e dar um
O servidor de e-mail irá dizer que a mensagem ficou na fila para entrega (Queued mail for delivery)
Depois é só digitar um quit para fecharmos o teste de e-mail.

Fonte: http://www.andersonpatricio.org/Tutoriais/AP040_b.html

OBS: Para windows 7 é necessario habilitar o recurso em: Painel de Controle > Programas e Recursos > Ativar ou desativar recursos do Windows > Selecionar Cliente Telnet e clicar em OK

 

Bem, tentei dessa forma, mas para conexão com smtp.gmail.com, ele exige autenticação TLS.

Essa autenticação não é possível com telnet nativo, pensei em usar openSSL, mas um arquivo “bat” não conseguiria enviar todas as informações para envio do email.

Então criei uma applicação console em C#. Foi simples e fácil. Só usando o namespace System.Net consegui o que eu queria.

Veja como ficou:

Class Program:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text;
namespace MgSendEmail {
     class Program
     {
         static int Main(string[] args)
         {
             if (args.Length != 7)
             {
                 Console.WriteLine("Informe os 7 argumentos:");
                 Console.WriteLine("emitente senha destinatario assunto mensagem servidor porta");
                 return 1;
             }
             else
             {
                 SendEmail se = new SendEmail();
                 se.MgSendEmail(args[0], args[1], args[0], args[2], args[3], args[4], args[5], Int32.Parse(args[6]));
                 return 0;
             }
         }
     }
 }

 

Class SendEmail

using System;
 using System.Collections.Generic;
 using System.Linq; using System.Text;
 using System.Net.Mail;
namespace MgSendEmail 
{
     class SendEmail
     {
         public void MgSendEmail(string user, string pass,
         string from, string to,
         string subject, string message,
         string server, int port)
         {
             SmtpClient client = new SmtpClient();
             client.Host = server;
             client.Port = port;
             client.EnableSsl = true;
             System.Net.NetworkCredential nc = new System.Net.NetworkCredential(user, pass);
             client.Credentials = nc;
             MailMessage msg = new MailMessage(from, to, subject, message);
             client.Send(msg);
         }
     }
 }

 

Pronto agora criei um bat que chama a aplicação compilada passando os dados.

,

  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: