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 from@bar.org valami1
03:24:00 from2@foo.xx valami2
stb...
Köszi,
Sz.
- 1210 megtekintés
Hozzászólások
Csak bash lehet?
Perl? Azzal _szerintem_ könnyebb...
---
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
Nincs előírás, csak perl-ben még gyengébb vagyok
- A hozzászóláshoz be kell jelentkezni
>>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 hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Na most már értem.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Köszönöm!
- A hozzászóláshoz be kell jelentkezni