Mengirim multi bagian / alternatif dengan mutt

12

Saya ingin opsi untuk surel dan / atau penerima tertentu untuk menjalankan skrip sebelum mengirim (apakah secara otomatis atau dengan menekan tombol pengikat) yang mengambil saya text/plain, menjalankan skrip di atasnya, dan kemudian melampirkan output skrip itu dengan text/htmljenis , atur seluruh pesan ke multipart/alternative.

Side ramble: Mungkin lebih baik jika ini terjadi secara otomatis segera sebelum mengirim tetapi hanya jika tipe tubuh saat ini diatur text/markdown, karena ini berarti email yang tertunda tidak pernah dalam keadaan di mana saya mengedit sumber lagi tetapi lupa untuk membuat ulang HTML, dan saya masih memiliki opsi untuk mengirim saja text/plain. Lalu saya akan memiliki pengikatan lain untuk mengatur tipe isi tubuh text/markdown, sehingga ini akan diambil. Tetapi kemudian saya juga memiliki masalah yang membuat banyak klien email (termasuk Gmail) menolak untuk me-render text/markdown(bahkan sebagai teks biasa), alih-alih menawarkannya sebagai unduhan, jadi saya harus meminta jenis konten dari bagian sumber dialihkan kembali untuk text/plain.

Apakah hal seperti itu mungkin dengan anjing kampung?

Sedihnya sejauh yang saya tahu mutt tidak mendukung pengiriman multipart/alternativepesan, menolak untuk mengirim apa pun kecuali multipart/mixed, tetapi saya ingin ditunjukkan bahwa saya salah.

Solusi terbaik yang bisa saya dapatkan adalah makro ini:

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

Ada beberapa masalah dengan ini:

  • Ini sepenuhnya menggantikan teks polos asli, sehingga jauh lebih sulit untuk diedit
  • Saya tidak suka bahwa ada ydi makro untuk mengatakan ya pada dialog yang menanyakan apakah tidak apa-apa untuk menimpa file
  • Saya harus menekan kembali setelah ini berjalan
  • Dan tentu saja hal utama: itu tidak mengirim alternatif teks biasa

Apakah ada solusi yang lebih baik?

Saya berpotensi terbuka untuk klien surat mode teks lain, asalkan itu

  • dapat digunakan dengan Google Apps, dan menyinkronkan flag, dll di kedua arah
  • mendukung GPG
  • memiliki binding seperti vim, atau saya dapat mengonfigurasinya
  • izinkan saya menggunakan vim sebagai editor pesan
  • memiliki tampilan pesan berulir
  • memungkinkan saya untuk memfilter / mencari surat dengan cara yang agak canggih (pengirim, penerima, keberadaan lampiran, pencarian subjek dan teks tubuh)
  • menangani jenis lampiran yang agak mirip mutt, yaitu suratkap atau setara sehingga saya dapat menjalankan email HTML yang masuk melalui lynx, atau tekan sesuatu untuk membukanya di browser grafis jika perlu, saya dapat meluncurkan pemirsa gambar dengan menekan tombol, dan sebagainya
gemetar
sumber

Jawaban:

1

Saya lupa tentang NeoMutt mendukung multi bagian. https://neomutt.org/guide/mimesupport .

Davey
sumber
Senang mendengarnya. Halaman yang Anda tautkan mengatakan dukungan untuk mengirim multi bagian / alternatif belum sempurna, tetapi saya akan mencobanya sebentar lagi. Terima kasih telah menunjukkannya.
gemetar
Neomutt seharusnya menjadi pengganti drop-in untuk mutt ol reguler. Hal yang menyenangkan lainnya adalah ternyata pengembangan aktifnya cukup besar.
Davey
Sepertinya fitur ditambahkan hanya setahun yang lalu: github.com/neomutt/neomutt/pull/734
tremby
Ini bekerja dengan baik. Saya membuat makro mirip dengan yang disarankan dalam dokumen yang Anda posting di neomutt.org/guide/… - Saya masih harus menekan enter setelah menggunakan makro, dan saya belum yakin apa yang akan terjadi jika saya ingin membuat perubahan setelah membuat alternatif tetapi sebelum mengirim, tapi saya akan mencari tahu pada waktunya. Perhatikan bahwa versi pertama yang mendukung multi bagian / alternatif adalah rilis 2018-05-12, yang belum ada di distro saya. Saya dikompilasi dari sumber dengan --gnutls --prefix/usr/local --tokyocabinet.
gemetar
-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
Davey
sumber
Tampaknya Anda menjawab pertanyaan "apakah mungkin menggunakan tanda tangan berbeda per 'dari' alamat email", yang sama sekali bukan pertanyaan yang saya ajukan. Saya tidak melihat bagaimana ini membantu dalam mengirim email multi bagian / alternatif.
gemetar
Saya melihat Anda telah mengedit jawaban Anda. OK jadi ini memeriksa dari mana alamat email yang Anda kirim dari dan ke (sepertinya Anda tidak melakukan apa-apa dengan "dari") dan mungkin menambahkan beberapa header. Tetapi saya masih tidak melihat bagaimana ini membantu dengan mengirim email multi bagian / alternatif.
gemetar
Anda mungkin perlu menyesuaikan ini untuk kebutuhan Anda sendiri, jadi saya mungkin tidak bisa menjelaskan semuanya untuk Anda. Tetapi solusi umumnya adalah Anda mengatur editor ke skrip yang memanggil editor Anda kemudian mem-parsing file konsep.
Davey
Suntingan khusus mana pada file konsep yang akan memungkinkan mutt mengirim multipart / alternatif? Di mana dua versi file, HTML dan teks biasa?
gemetar
Tampaknya Anda memiliki cara untuk mengonversi dengan tanda umum. Ganti itu dengan baris someultipartScript. $ 1 pada saat itu akan menjadi teks biasa. Kirim melalui alat konversi Anda di sana dan pipa ke nama file yang sama $ 1. Ketika skrip ini berakhir, ia mengirimkan sinyal ke program panggilan (mutt), bahwa editor Anda ditutup, pada titik mana ia harus siap untuk dikirim.
Davey