- Headers have been added to messages sent by MailNG (send/reply), they are now more compliant with RFC 2822
This commit is contained in:
tonio
2010-04-30 16:36:54 +02:00
parent 29e6bf4fb9
commit 379efaacf6
4 changed files with 31 additions and 10 deletions
+13 -4
View File
@@ -217,23 +217,32 @@ class IMAPconnector(object):
result[name] = None
return result
def _add_flag(self, folder, mail_id, flag):
self.m.select(self._encodefolder(folder), True)
self.m.store(mail_id, "+FLAGS", flag)
def msg_unread(self, folder, msgset):
self.m.select(self._encodefolder(folder), True)
self.m.store(msgset, "-FLAGS", "\\Seen")
def msg_read(self, folder, msgset):
self.m.select(self._encodefolder(folder), True)
self.m.store(msgset, "+FLAGS", "\\Seen")
self._add_flag(folder, msgset, "\\Seen")
def msgforwarded(self, folder, imapid):
self.m.select(self._encodefolder(folder), True)
self.m.store(imapid, "+FLAGS", "$Forwarded")
self._add_flag(folder, imapid, "$Forwarded")
def msg_answered(self, folder, imapid):
self._add_flag(folder, imapid, "\\Answered")
def move(self, msgset, oldfolder, newfolder):
self.m.select(self._encodefolder(oldfolder), True)
self.m.copy(msgset, newfolder)
self.m.store(msgset, "+FLAGS", "\\Deleted")
def push_mail(self, folder, msg):
now = imaplib.Time2Internaldate(time.time())
self.m.append(self._encodefolder(folder), '\\Seen', now, str(msg))
def empty(self, folder):
self.m.select(self._encodefolder(folder))
typ, data = self.m.search(None, 'ALL')
+14 -5
View File
@@ -215,10 +215,11 @@ def render_compose(request, form, posturl, bodyheader=None, body=None):
ctx = getctx("ok", level=2, menu=menu, listing=content)
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
def send_mail(request, withctx=False):
def send_mail(request, withctx=False, origmsg=None):
form = ComposeMailForm(request.POST)
if form.is_valid():
from email.mime.text import MIMEText
from email.utils import make_msgid, formatdate
import smtplib
msg = MIMEText(request.POST["id_body"].encode("utf-8"),
@@ -226,6 +227,11 @@ def send_mail(request, withctx=False):
msg["Subject"] = request.POST["subject"]
msg["From"] = request.POST["from_"]
msg["To"] = request.POST["to"]
msg["Message-ID"] = make_msgid()
msg["User-Agent"] = "MailNG"
msg["Date"] = formatdate()
if origmsg and origmsg.has_key("Message-ID"):
msg["References"] = msg["In-Reply-To"] = origmsg["Message-ID"]
rcpts = msg['To'].split(',')
if "cc" in request.POST.keys():
msg["Cc"] = request.POST["cc"]
@@ -234,8 +240,7 @@ def send_mail(request, withctx=False):
s = smtplib.SMTP(parameters.get("webmail", "SMTP_SERVER"))
if parameters.get("webmail", "SMTP_SECURED") == "yes":
s.starttls()
#except (smtplib.SMTPException, ssl.SSLError), error:
except Exception, e:
except (smtplib.SMTPException, ssl.SSLError), error:
print error
# Prévoir la remontée de cette erreur au niveau du client!!
@@ -243,6 +248,7 @@ def send_mail(request, withctx=False):
s.login(request.user.username, request.session["password"])
s.sendmail(msg['From'], rcpts, msg.as_string())
s.quit()
IMAPconnector(request).push_mail("Sent", msg)
ctx = getctx("ok", url=__get_current_url(request))
else:
ctx = getctx("ko", level=2, listing=render_to_string("webmail/compose.html",
@@ -262,9 +268,12 @@ def compose(request):
@login_required
def reply(request, folder, mail_id):
if request.method == "POST":
return send_mail(request)
msg = fetchmail(request, folder, mail_id, True)
if request.method == "POST":
ctx, r = send_mail(request, True, origmsg=msg)
if ctx["status"] == "ok":
IMAPconnector(request).msg_answered(folder, mail_id)
return r
email = ImapEmail(msg, True)
lines = email.body.split('\n')
body = ""
+3 -1
View File
@@ -278,7 +278,9 @@ ul.visible {
$$("a[name=fdaction]").addEvent("click", function(evt) {
evt.stop();
current_anchor.parse_string(evt.target.get("href"), true).update();
new Request.JSON({url : evt.target.get("href"),
onSuccess : get_callback("folder")
}).get();
});
$$("tbody>tr").each(function(item) {
+1
View File
@@ -2,6 +2,7 @@
import time
import re
import os
import time, random, hashlib
from email.header import decode_header
import lxml
import lxml.html