Envío de multiparte / alternativa con mutt


12

Me gustaría la opción para que ciertos correos electrónicos y / o destinatarios ejecuten un script antes de enviarlo (ya sea automáticamente o presionando una combinación de teclas) que toma mi text/plain, ejecuta un script sobre él y luego adjunta la salida de ese script con el text/htmltipo , configurando todo el mensaje en multipart/alternative.

Divagación lateral: podría ser bueno que esto ocurriera automáticamente inmediatamente antes del envío, pero solo si el tipo de cuerpo estaba configurado actualmente text/markdown, ya que esto significaría que el correo electrónico pendiente nunca estará en un estado en el que edite la fuente nuevamente, pero olvide volver a generar el HTML, y todavía tengo la opción de enviar solo text/plain. Luego tendría otro enlace para establecer el tipo de contenido del cuerpo text/markdown, para que esto se recoja. Pero también tengo el problema de que muchos clientes de correo (incluido Gmail) se niegan a procesar text/markdown(incluso como texto sin formato), en lugar de ofrecerlo como una descarga, por lo que necesitaría cambiar el tipo de contenido de la parte fuente. a text/plain.

¿Es posible tal cosa con el perro callejero?

Lamentablemente, por lo que puedo decir, mutt no admite el envío de multipart/alternativemensajes, se niega a enviar nada multipart/mixed, pero me encantaría que me muestren que estoy equivocado.

La mejor solución que he podido encontrar es esta macro:

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

Hay algunos problemas con esto:

  • Reemplaza por completo el texto plano original, por lo que es mucho más difícil de editar
  • No me gusta que haya yen la macro para decir sí al cuadro de diálogo preguntando si está bien sobrescribir el archivo
  • Tengo que presionar regresar después de que esto se ejecute
  • Y, por supuesto, lo principal: no envía la alternativa de texto sin formato

¿Hay una mejor solución?

Estoy potencialmente abierto a otro cliente de correo en modo texto, siempre que

  • se puede usar con Google Apps y sincroniza banderas, etc. en ambas direcciones
  • soporta GPG
  • tiene enlaces tipo vim, o puedo configurarlos
  • me permite usar vim como editor de mensajes
  • tiene una vista de mensaje enhebrado
  • me permite filtrar / buscar correo de una manera algo sofisticada (remitente, destinatario, presencia de archivos adjuntos, búsqueda de asunto y texto del cuerpo)
  • maneja los tipos de archivos adjuntos un poco como mutt, es decir, mailcap o equivalente para que pueda ejecutar el correo HTML entrante a través de lynx, o presionar algo para abrirlo en el navegador gráfico si es necesario, puedo iniciar visores de imágenes con solo presionar un botón, y así sucesivamente

Respuestas:


1

Olvidé que NeoMutt admite multiparte. https://neomutt.org/guide/mimesupport .


Es bueno oír eso. La página que vinculó dijo que el soporte para enviar multiparte / alternativa es rudimentario, pero lo intentaré pronto. Gracias por mencionarlo.
temblorosa

Se supone que Neomutt es un reemplazo directo para el viejo perro callejero. La otra cosa buena es que aparentemente tiene un desarrollo activo bastante grande.
Davey

Parece que la función se agregó hace solo un año: github.com/neomutt/neomutt/pull/734
tremby

Funciona muy bien Hice una macro similar a la sugerida en los documentos que publicó en neomutt.org/guide/… - Todavía tengo que presionar enter después de usar la macro, y todavía no estoy seguro de qué sucederá si quiero hacer cambia después de generar la alternativa pero antes de enviarla, pero lo resolveré a su debido tiempo. Tenga en cuenta que la primera versión que admite multiparte / alternativa es la versión 2018-05-12, que aún no está en mi distribución. Compilé desde la fuente con --gnutls --prefix/usr/local --tokyocabinet.
temblorosa

-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 está respondiendo a la pregunta "¿es posible utilizar diferentes firmas por dirección de correo electrónico 'desde'", que no es en absoluto la pregunta que hice. No veo cómo esto ayuda con el envío de correo electrónico multiparte / alternativo.
temblorosa

Veo que has editado tu respuesta. OK, esto verifica a qué direcciones de correo electrónico está enviando desde y hacia (no parece que haga nada con "from") y posiblemente agrega algunos encabezados. Pero todavía no veo cómo esto ayuda con el envío de correo electrónico multiparte / alternativo.
temblorosa

Probablemente tengas que ajustar esto para tus propias necesidades, así que probablemente no pueda explicarte todo. Pero la solución general es que configure su editor en un script que invoca a su editor y luego analiza el archivo borrador.
Davey

¿Qué edición específica del borrador del archivo permitirá que mutt envíe multiparte / alternativa? ¿Dónde están las dos versiones del archivo, HTML y texto plano?
temblorosa

Parece que tienes una forma de convertir con commonmark. Reemplace eso con la línea someMultipartScript. $ 1 en ese punto será texto sin formato. Envíelo a través de su herramienta de conversión allí y canalícelo al mismo nombre de archivo $ 1. Cuando finaliza este script, envía una señal al programa de llamada (mutt), que su editor está cerrado, momento en el que debería estar listo para enviar.
Davey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.