Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

1

23.09.2020, 14:11

Mutt - wie speichern von Mails als Datei per Macro ?

Hallo,
ich habe ein IMAP Postfach das ich per Mutt öffne.
In dem Postfach ist ein Ordner und die eMails in diesem Ordner möchte ich als Datei speichern (pro eMail eine Datei).
Aber leider passiert nichts.

meine ~/.muttrc

Quellcode

1
2
3
4
5
6
7
8
9
# Automatically log in to this mailbox at startup
set spoolfile="imaps://hans:daspasswort@mailserver.domain.tld/INBOX/test"
# Define the = shortcut, and the entry point for the folder browser (c?)
set folder="imaps://hans:daspasswort@mailserver.domain.tld"
set record="=Sent"
set postponed="=Drafts"
set sort_aux = last-date-received                           
set sort = reverse-threads
folder-hook inbox/mutt 'macro index,pager S "| ~/email_to_file.sh /tmp/email<enter>"'




~/email_to_file.sh

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env bash
# Save piped email to "$1/YYMMDD SUBJECT.eml"

# Don't overwrite existing file
set -o noclobber

message=$(cat)

mail_date=$(<<<"$message" grep -oPm 1 '^Date: ?\K.*')
formatted_date=$(date -d"$mail_date" +%y%m%d)
# Get the first line of the subject, and change / to ∕ so it's not a subdirectory
subject=$(<<<"$message" grep -oPm 1 '^Subject: ?\K.*' | sed 's,/,∕,g')

if [[ $formatted_date == '' ]]; then
  echo Error: no date parsed
  exit 1
elif [[ $subject == '' ]]; then
  echo Warning: no subject found
fi

echo "${message}" > "$1/$formatted_date $subject.eml" && echo Email saved to "$1/$formatted_date $subject.eml"


Das script: email_to_file.sh ist nicht von mir das hab ich im Web gefunden.

Was mach ich da falsch ?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ds2k5« (01.10.2020, 13:45)


2

23.09.2020, 17:08

Ein folder-hook greift nur bei existierenden Ordnern. Wenn deine Mailbox keinen Ordner "inbox/mutt" hat, dann kommt das Macro auch nicht zum Zug.
Entweder wendest du den hook auf einen existierenden Ordner an oder lässt ihn weg und definierst das Macro global:

Quellcode

1
macro index,pager S "| ~/email_to_file.sh /tmp/email<enter>"


Und wenn dann die Fehlermeldungen kommen:
  1. Das aufgerufene Script muss ausführbar sein
  2. Der Zielordner muss schon existieren

Wenn du mehrere mails selektiert hast, werden sie alle in eine einzige Datei mit dem Subject der ersten mail geschrieben. Das liegt in der Natur von dem Script.
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

3

24.09.2020, 07:32

Hallo Fredl,

>Ein folder-hook greift nur bei existierenden Ordnern. Wenn deine Mailbox keinen Ordner "inbox/mutt" hat, dann kommt das Macro auch nicht zum Zug.

sorry mein fehler... den Ordner Mutt gibt es und ich hab ein paar testmail darin.

>Und wenn dann die Fehlermeldungen kommen:

> Das aufgerufene Script muss ausführbar sein

ist es:

-rwxr--r-- 1 ds2k5 ds2k5 647 23. Sep 13:40 email_to_file.sh

> Der Zielordner muss schon existieren

$ ls -la /tmp/email/
insgesamt 0
drwxr-xr-x 2 ds2k5 ds2k5 40 23. Sep 13:59 .
drwxrwxrwt 25 root root 4240 24. Sep 07:23 ..

4

24.09.2020, 22:58

den Ordner Mutt gibt es

Groß/Kleinschreibung zählt. Der Hauptordner heißt meistens INBOX
Unterordner werden mit Punkt getrennt, nicht Slash
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

5

25.09.2020, 09:55

>Groß/Kleinschreibung zählt. Der Hauptordner heißt meistens INBOX
>Unterordner werden mit Punkt getrennt, nicht Slash

Danke, aber wenn ich folgendes mache:

set spoolfile="imaps://USERNAME:PASSWORD@mailserver.tld/INBOX/mutt"

sehe ich nur die Mails vom Ordner: mutt

Daher denke ich das die schreibweise OK ist.

6

25.09.2020, 17:55

wenn ich folgendes mache:

set spoolfile="imaps://USERNAME:PASSWORD@mailserver.tld/INBOX/mutt"

sehe ich nur die Mails vom Ordner: mutt

Das ist klar. Es ging ja auch um den folder-hook, nicht das spoolfile.

Warum machst du es eigentlich nicht als generelles macro, wie ich oben angedeutet habe? Oder willst du nur mails aus dem einen Unterordner speichern?
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

7

29.09.2020, 07:09

>Oder willst du nur mails aus dem einen Unterordner speichern?

ja nur Mails aus einem bestimmten Ordner sollen gespeichert werden.

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

8

29.09.2020, 09:53

wenn ich folgendes mache: push statt macro index,pager S

folder-hook INBOX/mutt 'push "| ~/email_to_file.sh /tmp/email<enter>"'

dann erscheint die neueste Mail in geöffnetem Zustand.
Und im Filesystem liegt eine Datei mit dem text der email:

$ ls -lathr /tmp/email/
insgesamt 4,0K
-rw------- 1 myuser myuser 2,4K 29. Sep 09:49 '200929 test 2.eml'
drwxr-xr-x 2 myuser myuser 60 29. Sep 09:49 .
drwxrwxrwt 26 root root 9,7K 29. Sep 09:50 ..

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

9

30.09.2020, 13:49

nun hab ich was:

.muttrc
set wait_key = no
set delete = yes


"mutt -e 'push "| ~/email_to_file.sh /tmp/email<enter><delete-message><quit><exit>'
"

so wird dann eine mail abgespeichert und mutt beendet...

leider hab ich es noch nicht geschafft das es dann alle mails auf einmal speichert und löscht
leider muss ich mutt solang erneut starten bis keine mehr im ordner sind

10

30.09.2020, 22:04

Ich kann dazu nur noch beitragen, daß ich alles was ich bisher dazu geschrieben habe, selbst probiert habe.
Mutt bietet aber ausreichend Spielraum für viele weitere Experimente.
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

11

01.10.2020, 13:40

Hier meine Lösung, nicht schön aber geht erstmal.

.muttrc

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
# Automatically log in to this mailbox at startup
set spoolfile="imaps://username:passwort@mailserver.domain.tld/INBOX/mutt"
# Define the = shortcut, and the entry point for the folder browser (c?)
set folder="imaps://mailserver.domain.tld/INBOX/mutt"
set record="=Sent"
set postponed="=Drafts"
#newest emails on top
set sort_aux = last-date-received                           
set sort = reverse-threads
set auto_tag=yes
set timeout=10
set wait_key = no
set delete = yes


email_to_file.sh

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env bash
# Save piped email to "$1/YYMMDD SUBJECT.eml"

# Don't overwrite existing file
set -o noclobber

message=$(cat)

mail_date=$(<<<"$message" grep -oPm 1 '^Date: ?\K.*')
#formatted_date=$(date -d"$mail_date" +%y%m%d%)
formatted_date=$(date -d"$mail_date" +%y%m%d%H%M%S)
# Get the first line of the subject, and change / to ∕ so it's not a subdirectory
subject=$(<<<"$message" grep -oPm 1 '^Subject: ?\K.*' | sed 's,/,∕,g')

if [[ $formatted_date == '' ]]; then
  echo Error: no date parsed
  exit 1
elif [[ $subject == '' ]]; then
  echo Warning: no subject found
fi

echo "${message}" > "$1/$formatted_date $subject.eml" && echo Email saved to "$1/$formatted_date $subject.eml"



get_mails.sh

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
function getmail {
if [ $? -ne 0 ]
        then
		echo "keine Mails"
		exit
	else 
		mutt -z -e 'push "| ~/email_to_file.sh /tmp/email<enter><delete-message><quit><exit><quit>'
		getmail
fi
}
mutt -z -e 'push "| ~/email_to_file.sh /tmp/email<enter><delete-message><quit><exit><quit>'
getmail

ds2k5

User

  • »ds2k5« ist der Autor dieses Themas

Beiträge: 63

Registrierungsdatum: 05.03.2008

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

12

01.10.2020, 13:46

Danke Dir für die Hilfe Ferdl !!!

Beiträge: 1 131

Registrierungsdatum: 08.11.2015

Derivat: unbekannt

Version: gar kein Ubuntu

Architektur: 64-Bit PC

Desktop: LXDE

Andere Betriebssysteme: Debian bullseye-testing / 5.10.0-10-amd64

  • Nachricht senden

13

01.10.2020, 14:08

Hilfe Ferdl !!!


Haha, die Quittung kommt direkt. :-D
Heute ist keiner da! Komm morgen wieder. :-)

14

01.10.2020, 23:51

8o
Der Beitrag ist nicht zu kurz.
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl