Sobre o projeto

sendsmtp é um pequeno cliente SMTP de linha de comando implementado em Python puro, sem dependências de terceiros. Ele compõe uma mensagem de e-mail text/plain em UTF-8 e a entrega a um servidor SMTP, tornando-o útil para notificações via script, relatórios de build ou para encaminhar a saída de comandos de um shell para um e-mail. Instalação e requisitos O pacote é instalado com pip (python3 -m pip install --user --upgrade sendsmtp) e requer Python 3.11 ou superior. Uso básico O comando aceita três argumentos posicionais: HOST (nome do host ou IP do servidor SMTP), FROM (usado tanto como remetente do envelope SMTP quanto no cabeçalho From) e TO (um endereço ou vários endereços separados por vírgulas, sem espaços ao redor das vírgulas). Uma invocação típica envia o corpo inline com -m e o assunto com -s, e reporta sucesso quando o servidor aceita a mensagem. Fontes do corpo da mensagem O corpo pode vir de três lugares. A opção -m/--message o fornece inline. A opção -i/--input o lê de um caminho de arquivo e tem precedência sobre --message; se o caminho não for um arquivo existente, a opção é ignorada e o corpo retorna para --message ou stdin. Se nenhuma opção for fornecida, o corpo é lido do stdin: a entrada via pipe é lida até o EOF, enquanto um terminal interativo aciona um prompt que lê linhas até que uma linha contenha apenas EOF. Manipulação do assunto --subject/-s define o assunto explicitamente. Se for omitido e o corpo começar com uma linha Subject:, essa linha é removida do corpo e usada como assunto. Segurança de conexão e portas O cliente suporta três modos. O SMTP simples usa a porta 25 por padrão. --starttls conecta-se em texto simples e atualiza a conexão usando a extensão STARTTLS, com porta padrão 587. -t/--tls usa TLS implícito desde o primeiro byte (SMTPS), com porta padrão 465. As duas opções de TLS são mutuamente exclusivas, e -p/--port substitui a porta padrão em qualquer modo. Autenticação -u/--username habilita o SMTP AUTH; sem isso, nenhuma tentativa de AUTH é feita. Se um nome de usuário for fornecido sem --password, a senha será solicitada interativamente sem eco. A documentação observa que isso é preferível porque as linhas de comando podem ser visíveis para outros processos e são registradas no histórico do shell. Falhas de autenticação abortam a execução e a mensagem não é enviada. Destinatários além do TO -c/--cc adiciona destinatários em cópia carbono, que aparecem no cabeçalho CC e recebem a mensagem. -b/--bcc adiciona destinatários em cópia carbono oculta, que recebem a mensagem, mas não são listados em nenhum cabeçalho. Ambos aceitam listas de endereços separadas por vírgulas. Diagnósticos -v/--verbose imprime o diálogo SMTP no stderr, reporta as etapas de conexão e autenticação, lista os endereços para os quais a mensagem foi entregue e, em caso de falha, mostra o stack trace completo em vez de um erro de uma única linha. Sem isso, as falhas produzem uma mensagem de erro de linha única. Cabeçalhos de mensagem e códigos de saída As mensagens geradas contêm os cabeçalhos From, To, Subject, CC (apenas com --cc) e um cabeçalho X-Mailer: sendsmtp. O código de saída 0 significa que o servidor aceitou a mensagem para todos os destinatários, 1 indica um erro ou pelo menos um destinatário recusado, e 130 sinaliza uma interrupção com Ctrl-C. Licenciamento O projeto é lançado sob a licença MIT.