Mutt ile çok parçalı / alternatif gönderme


12

Belirli e-postaların ve / veya alıcıların göndermeden önce bir komut dosyasını çalıştırmasını (ister otomatik olarak ister bir tuş bağına basarak) benim almamı text/plain, bir komut dosyasını çalıştırmasını ve ardından bu komut dosyasının çıktısını text/htmltürüyle iliştirmesini istiyorum , iletinin tamamını olarak ayarlayın multipart/alternative.

Side ramble: Bunun gönderilmeden hemen önce otomatik olarak gerçekleşmesi güzel olabilir, ancak yalnızca gövde türü şu anda ayarlanmışsa text/markdown, bu beklemede olan e-postanın kaynağı bir daha asla düzenlemediğim, ancak HTML'yi yeniden oluşturmayı unuttuğum anlamına geleceği anlamına gelir, ve yine de yalnızca gönderme seçeneğim var text/plain. Daha sonra vücudun içerik türünü ayarlamak için başka bir bağlantım olacaktı text/markdown, böylece bu toplanacaktı. Ancak daha sonra bir çok posta istemcisinin (Gmail dahil) text/markdownbir indirme olarak sunmayı (düz metin olarak bile ) oluşturmayı reddetmesi sorunum var, bu yüzden kaynak parçanın içerik türünün geri çevrilmesi gerekir için text/plain.

Mutt ile böyle bir şey mümkün mü?

Ne yazık ki mutt söyleyebildiğim kadarıyla multipart/alternativemesaj göndermeyi desteklemiyor , herhangi bir şey göndermeyi reddediyor multipart/mixed, ama yanlış olduğumu göstermeyi çok isterim.

Gelebildiğim en iyi çözüm bu makro:

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

Bununla ilgili birkaç sorun var:

  • Orijinal düz metnin tamamen yerini alır, bu nedenle düzenlemek çok daha zordur
  • yMakroda dosyanın üzerine yazmanın uygun olup olmadığını soran diyaloğa evet demek hoşuma gitmiyor
  • Bu çalıştıktan sonra return tuşuna basmam gerekiyor
  • Ve elbette ana şey: düz metin alternatifi göndermiyor

Daha iyi bir çözüm var mı?

Potansiyel olarak başka bir metin modu posta istemcisine açıkım

  • Google Apps ile kullanılabilir ve her iki yönde bayrakları vb. senkronize eder
  • GPG'yi destekler
  • vim benzeri bağlamaları var veya bunları yapılandırabilirim
  • vim'i mesaj düzenleyicisi olarak kullanmama izin verin
  • dişli mesaj görünümü var
  • postaları biraz karmaşık bir şekilde filtrelememe / aramama olanak tanır (gönderen, alıcı, eklerin varlığı, konu ve gövde metni araması)
  • ek türlerini biraz mutt, yani mailcap veya eşdeğeri gibi işler, böylece lynx aracılığıyla gelen HTML postasını çalıştırabilirim veya gerekirse grafik tarayıcıda açmak için bir şeye basabilirim, bir düğmeye basarak görüntü izleyicileri başlatabilirim vb.

Yanıtlar:


1

NeoMutt'un çoklu parçayı desteklediğini unuttum. https://neomutt.org/guide/mimesupport .


Bunu duymak güzel. Bağladığınız sayfa, çok parçalı / alternatif gönderme desteğinin temel olduğunu söyledi, ancak kısa bir süre sonra tekrar deneyeceğim. Gösterdiğiniz için teşekkürler.
tremby

Neomutt'un normal mutt için yerine bir yedek olması gerekiyordu. Diğer güzel şey, görünüşe göre oldukça büyük aktif gelişime sahip olmasıdır.
Davey

Özellik sadece bir yıl önce eklendi gibi görünüyor: github.com/neomutt/neomutt/pull/734
tremby

Harika çalışıyor. Neomutt.org/guide/… adresinde yayınladığınız dokümanlarda önerilene benzer bir makro yaptım - Makroyu kullandıktan sonra hala enter tuşuna basmam gerekiyor ve yapmak istiyorsam ne olacağından henüz emin değilim alternatifi oluşturduktan sonra ancak göndermeden önce değişir, ancak tüm bunları zamanında yapacağım. Çok parçalı / alternatifi destekleyen ilk sürümün, henüz dağıtımımda olmayan 2018-05-12 sürümü olduğunu unutmayın. İle kaynağından derledim --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

"E-posta adresinden" her biri için farklı imzalar kullanmak mümkün mü sorusunu yanıtlıyor gibi görünüyorsunuz. Bu, hiç sorduğum soru değil. Bunun çok parçalı / alternatif e-posta göndermede nasıl yardımcı olduğunu görmüyorum.
tremby

Cevabınızı düzenlediğinizi görüyorum. Tamam, bu da hangi e-posta adreslerini gönderip gönderdiğinizi kontrol eder ("from" ile hiçbir şey yapmıyormuşsunuz gibi görünmez) ve muhtemelen bazı üstbilgiler ekler. Ancak bunun çok parçalı / alternatif e-posta göndermeye nasıl yardımcı olduğunu hala göremiyorum.
tremby

Muhtemelen bunu kendi ihtiyaçlarınıza göre ayarlamanız gerekecek, bu yüzden muhtemelen sizin için her şeyi açıklayamıyorum. Ancak genel çözüm, düzenleyicinizi, düzenleyicinizi çağıran ve ardından taslak dosyasını ayrıştıran bir komut dosyasına ayarlamanızdır.
Davey

Taslak dosyada hangi belirli düzenleme, mutt'un çok parçalı / alternatif göndermesine izin verecektir? Dosyanın iki sürümü nerede, HTML ve düz metin?
tremby

Commonmark ile dönüştürmenin bir yolu var gibi görünüyor. Bunu someMultipartScript satırıyla değiştirin. Bu noktada 1 $ düz metin olacaktır. Orada dönüştürme aracınızı kullanarak gönderin ve aynı dosya adına $ 1 ekleyin. Bu komut dosyası sona erdiğinde, çağıran programa (mutt), düzenleyicinizin kapalı olduğuna dair bir sinyal gönderir; bu noktada gönderilmeye hazır olmalıdır.
Davey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.