Toon posts:

E-mail bodytext omzetten naar attachment via procmail

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg geautomatiseerd mailtjes binnen waarvan ik elke keer de bodytext moet opslaan als bestand (copy en paste in notepad). Eigenlijk moet het verzend proces de bodytext als attachment versturen, maar dat kan niet veranderd worden (nee, echt niet). Het ontvang proces wil ik ook niet wijzigen. Alleen mailtjes met een bepaalde syntax moeten bestanden worden.

Ik heb wel volledige invloed op de mailserver (procmail op linux).

Mijn eerste idee:
code:
1
2
3
4
.procmailrc
:0fw
* ^.+\@mailserver\.local.+$
| /usr/local/bin/mailbody2file.pl

En ik dacht zelf om een Perl script (mailbody2file.pl) te schrijven (een taaltje wat me erg goed ligt) die van elk mailtje controleerd of de bodytext de juiste syntax heeft en die omzet naar een attachment.

Heeft iemand al eens zoiets gemaakt, gebruikt, onderzocht of zelfs op dit moment in gebruik? Aanwijzingen naar Websites elders zijn zeer welkom.

  • bkor
  • Registratie: November 2000
  • Niet online
Lijkt me inefficient en behoorlijk saai werk om steeds handmatig attachments te gaan opslaan. Kan je dat ook niet gewoon automatiseren / voorkomen?

Ik heb een voorbeeld gemaakt in Python want Perl zuigt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/python
 
import email
import email.MIMEMultipart
import email.MIMEText
import email.MIMEBase
import email.Encoders
import smtplib
import sys
 
# Read from stdin
mailin = email.message_from_string(sys.stdin.read())
text = mailin.get_payload(decode=1)
 
# Do something
print text
 
mailout = email.MIMEMultipart.MIMEMultipart()
mailout['Subject'] = 'Hi! How are you?'
mailout['From']    = 'Me'
mailout['To']      = 'You'
 
msg = email.MIMEText.MIMEText("I send this file in order to have your advice")
mailout.attach(msg)
 
# Add attachment
filename = "information.txt.scr"
msg = email.MIMEBase.MIMEBase("application", "octet-stream")
msg.set_payload(text)
email.Encoders.encode_base64(msg)
msg.add_header('Content-Disposition', 'attachment', filename=filename)
mailout.attach(msg)
 
# Send it
server = smtplib.SMTP('localhost')
server.sendmail('me@blah.invalid', ['dynamiel@wanadoo.invalid'], mailout.as_string())
server.close()


offtopic:
flamewar op z'n tijd moet kunnen ;)

[ Voor 9% gewijzigd door bkor op 18-07-2003 16:02 ]


Verwijderd

Topicstarter
Bedankt voor je voorbeeld. Ik probeer het maandag.
Ik heb toch wel even VB scriptje geschreven (gevonden en aangepast) voor op de client. Het resultaat is hetzelfde, maar ik wil uiteindelijk op de server de aanpassing doen.