bash - +File feldolgozása és diges-t ként való elküldése

 ( szabek | 2017. október 30., hétfő - 12:04 )

Sziasztok,

Adott egy leválogatott file 4 mezővel.
date, from, to, text
A from és a to email címek.

Hogy kellene feldolgozni ezt a file-t, ha diges-t módon szeretném elküldeni email-ben $to-nak, hogy ekkor és ekkor innen és innen jött ez és ez a $text.

Úgy megtudtam csinálni, hogy file-be külön lerendezem és elküldöm, de biztos van ennek szebb megoldása.

Szóval valami ilyes levelet szeretnék kiküldeni: $to-nak:

Hello $to!

02:30:00

valami1
03:24:00

valami2
stb...

Köszi,
Sz.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Csak bash lehet?
Perl? Azzal _szerintem_ könnyebb...

---
"A megoldásra kell koncentrálni nem a problémára."

Nincs előírás, csak perl-ben még gyengébb vagyok

>>date, from, to, text
Kérdések:
- ',' a szeparátor?
- a 'text' egysoros?
- a 'to' minden sorban ugyanaz? Mert a példádban így szerepel.
- a 'to'-ban csak egy címzett van?

Jó lenne, ha bemásolná ide 3-4 sort a "leválogatott" fájlból.

--
eutlantis

a szeparátor: space
a text: igen, egy rövid bejegyzés
a to: változó, lehet, h csak 1xer bukkan fel, lehet, többször

https://pastebin.com/5bbwTN3p

Na most már értem.
--
eutlantis

Csak python3-ban tudtam elvállalni, sorry:-)
Indíthatod így is:

./digest.py "leválogatott_fájl_neve"

Új verzió, amely el is küldi a levelet:

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# digest.py, tesztelve python 3.5.3-ban

import sys,smtplib,getpass
from email.mime.text import MIMEText

mailhost_user= input("gmail user=")
mailhost_pwd= getpass.getpass("gmail password=")

Subject= "Digest"
Sender=  "szabek@valami.hu"
Mailhost= "smtp.gmail.com"
Port= 587

fname= sys.argv[1] if len(sys.argv)==2 else "messages.txt"

with open(fname) as ff:

    items=[]
    receivers= set()
    for sor in ff:
        sor= sor.strip()
        if sor:
            sor= sor.split(" ",maxsplit=3)
            items.append(sor)
            receivers.add( sor[2].strip() )


for rece in receivers:
    message=""
    for tim,sender,r,text in items:
        if rece==r.strip():
            message+= tim +" "+ sender +" "+ text + "\n"

    if message:
        message= "Szia," + rece + "\n" + message
        print("\n-----\n@@A küldendő:\n"+message+"\n")
        msgobj= MIMEText(message)
        msgobj["Subject"] = Subject
        msgobj["From"] = Sender
        msgobj["To"] = rece
        print("@@A levél:\n")
        print(msgobj)
        try:
            server = smtplib.SMTP(Mailhost, Port)
            server.ehlo()
            server.starttls()
            server.login(mailhost_user, mailhost_pwd)
            server.send_message(msgobj)
            server.close()
            print("@@Mail is sent.")
        except:
            print("@@Mail sending error!")


--
eutlantis

Köszönöm!