Enviando multipart / alternativo com mutt


12

Gostaria da opção de certos emails e / ou destinatários executarem um script antes de enviá text/plain-los (seja automaticamente ou pressionando uma tecla de atalho), o que leva meu , executa um script sobre ele e anexa a saída desse script ao text/htmltipo , definindo a mensagem inteira como multipart/alternative.

Caminhada lateral: pode ser bom se isso aconteceu automaticamente imediatamente antes do envio, mas apenas se o tipo de corpo estiver definido no momento text/markdown, pois isso significa que o e-mail pendente nunca está em um estado em que edito a fonte novamente, mas esqueço de regenerar o HTML, e ainda tenho a opção de enviar apenas text/plain. Então eu teria outra ligação para definir o tipo de conteúdo do corpo text/markdown, para que isso fosse escolhido. Mas também tenho o problema de que muitos clientes de email (inclusive o Gmail) se recusam a renderizar text/markdown(mesmo como texto sem formatação), em vez de oferecê-lo como um download, por isso precisaria voltar o tipo de conteúdo da parte de origem para text/plain.

Isso é possível com vira-lata?

Infelizmente, até onde eu sei, o vira-lata não suporta o envio de multipart/alternativemensagens, recusando-se a enviar qualquer coisa multipart/mixed, mas eu adoraria mostrar que estou errado.

A melhor solução que consegui encontrar é essa macro:

macro compose M "<filter-entry>commonmark<return>y<edit-type><kill-line>text/html<return>" "convert message to HTML with Commonmark"

Existem alguns problemas com isso:

  • Ele substitui inteiramente o texto sem formatação original, tornando muito mais difícil editar
  • Não gosto que haja yna macro para dizer sim à caixa de diálogo perguntando se não há problema em substituir o arquivo
  • Eu tenho que pressionar return depois que isso for executado
  • E, claro, o principal: não envia a alternativa em texto sem formatação

Existe uma solução melhor?

Estou potencialmente aberto a outro cliente de email em modo de texto, desde que

  • é utilizável no Google Apps e sincroniza sinalizadores etc. nas duas direções
  • suporta GPG
  • tem ligações semelhantes a vim, ou eu posso configurá-las
  • permite-me usar o vim como um editor de mensagens
  • tem uma exibição de mensagem encadeada
  • permite filtrar / pesquisar mensagens de uma maneira um pouco sofisticada (remetente, destinatário, presença de anexos, pesquisa de assunto e texto do corpo)
  • lida com tipos de anexos um pouco como mutt, por exemplo, mailcap ou equivalente, para que eu possa executar o correio HTML recebido através do lynx ou pressionar algo para abri-lo no navegador gráfico, se necessário, posso iniciar os visualizadores de imagens com o pressionar de um botão, e assim por diante

Respostas:


1

Esqueci o NeoMutt suporta multipart. https://neomutt.org/guide/mimesupport .


Isso é bom de ouvir. A página que você vinculou disse que o suporte ao envio de várias partes / alternativa é rudimentar, mas tentarei em breve. Obrigado por apontar isso.
tremby

Supõe-se que Neomutt seja um substituto para o velho mutante comum. A outra coisa interessante é que aparentemente ele tem um desenvolvimento ativo bastante grande.
Davey

Parece que o recurso foi adicionado há apenas um ano: github.com/neomutt/neomutt/pull/734
tremby

Isso funciona muito bem. Fiz uma macro semelhante à sugerida nos documentos que você publicou em neomutt.org/guide/… - ainda preciso pressionar enter depois de usar a macro e ainda não tenho certeza do que acontecerá se eu quiser criar muda depois de gerar a alternativa, mas antes de enviar, mas vou descobrir tudo isso no devido tempo. Observe que a primeira versão para oferecer suporte a multipart / alternativa é a versão 2018-05-12, que ainda não está em minha distribuição. Eu compilei da fonte com --gnutls --prefix/usr/local --tokyocabinet.
tremby

-1
    #!/bin/bash

    cp $1 $1.tmp
    ##CHANGE OVERALL TYPE IN HEADER TO MULTIPART

    #HANDLE CONTENT-TYPE LINE IN HEADER
    if grep -q "Content-Type:" $1; then
            sed -i -e 's/Content-Type:.*?;/Content-Type: multipart\/alternative; boundary=boundary42/' $1.tmp
    else
            sed -i '1iContent-Type: multipart/alternative; boundary=boundary42' $1.tmp
    fi

    #EXTRACT HEADER AND BODY
    header="$(sed '/^$/q' $1.tmp)"
    body="$(sed -n -e '/^$/,$p' $1.tmp | tail -n +2)"

    #CREATE HTML VERSION
    HTMLbody="$(echo "$body" | commonmark)"

    #ADD HEADER
    echo "$header" > $1

    #START PLAIN TEXT
    echo -e "\n--boundary42\n" >> $1
    echo -e "Content-Type: text/plain; charset=us-ascii\n" >> $1
    echo "$body" >> $1

    #START HTML
    echo -e "\n--boundary42\n" >> $1
    echo "Content-Type: text/html; charset=UTF-8" >> $1
    echo "Content-Transfer-Encoding: quoted-printable\n" >> $1
    echo "$HTMLbody" >> $1

    echo -e "\n--boundary42--" >> $1

    msmtp $1

Parece que você está respondendo à pergunta "é possível usar assinaturas diferentes por endereço de e-mail 'de'", o que não é de todo a pergunta que eu fiz. Não vejo como isso ajuda no envio de emails alternativos / com várias partes.
tremby

Vejo que você editou sua resposta. OK, para verificar quais endereços de e-mail você está enviando de e para (não parece que você faz nada com "from") e possivelmente adiciona alguns cabeçalhos. Mas ainda não vejo como isso ajuda no envio de emails alternativos / com várias partes.
Tremby 04/04/19

Você provavelmente precisará ajustar isso para suas próprias necessidades, então provavelmente não posso explicar tudo para você. Mas a solução geral é que você defina seu editor como um script que chama seu editor e analise o arquivo de rascunho.
Davey

Qual edição específica do arquivo de rascunho permitirá que o mutt envie várias partes / alternativa? Onde estão as duas versões do arquivo, HTML e texto sem formatação?
tremby

Você parece ter uma maneira de converter com marca comum. Substitua isso pela linha someMultipartScript. $ 1 nesse momento serão texto simples. Envie-o através da sua ferramenta de conversão e direcione-o para o mesmo nome de arquivo $ 1. Quando esse script termina, ele envia um sinal ao programa de chamada (mutt), informando que seu editor está fechado e, nesse ponto, ele deve estar pronto para enviar.
Davey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.