瀏覽代碼

[hot] [fix] X-Original-From set_header

version-14
Anand Doshi 9 年之前
父節點
當前提交
9a330ab58f
共有 1 個檔案被更改,包括 20 行新增14 行删除
  1. +20
    -14
      frappe/email/email_body.py

+ 20
- 14
frappe/email/email_body.py 查看文件

@@ -5,7 +5,8 @@ from __future__ import unicode_literals
import frappe
from frappe.utils.pdf import get_pdf
from frappe.email.smtp import get_outgoing_email_account
from frappe.utils import get_url, scrub_urls, strip, expand_relative_urls, cint, split_emails, to_markdown, markdown
from frappe.utils import (get_url, scrub_urls, strip, expand_relative_urls, cint,
split_emails, to_markdown, markdown, encode)
import email.utils

def get_email(recipients, sender='', msg='', subject='[No Subject]',
@@ -176,7 +177,8 @@ class EMail:

def replace_sender(self):
if cint(self.email_account.always_use_account_email_id_as_sender):
self.original_sender = self.sender
self.set_header('X-Original-From', self.sender)

sender_name, sender_email = email.utils.parseaddr(self.sender)
self.sender = email.utils.formataddr((sender_name or self.email_account.name, self.email_account.email_id))

@@ -190,28 +192,32 @@ class EMail:
def make(self):
"""build into msg_root"""
headers = {
"Subject": strip(self.subject).encode("utf-8"),
"From": self.sender.encode("utf-8"),
"To": ', '.join(self.recipients).encode("utf-8"),
"Subject": strip(self.subject),
"From": self.sender,
"To": ', '.join(self.recipients),
"Date": email.utils.formatdate(),
"Reply-To": self.reply_to.encode("utf-8") if self.reply_to else None,
"CC": ', '.join(self.cc).encode("utf-8") if self.cc else None,
b'X-Frappe-Site': get_url().encode('utf-8'),
"Reply-To": self.reply_to if self.reply_to else None,
"CC": ', '.join(self.cc) if self.cc else None,
'X-Frappe-Site': get_url(),
}

if cint(self.email_account.always_use_account_email_id_as_sender) and hasattr(self, 'original_sender'):
headers[b'X-Original-From'] = self.original_sender.encode('utf-8')

# reset headers as values may be changed.
for key, val in headers.iteritems():
if self.msg_root.has_key(key):
del self.msg_root[key]
self.msg_root[key] = val
self.set_header(key, val)

# call hook to enable apps to modify msg_root before sending
for hook in frappe.get_hooks("make_email_body_message"):
frappe.get_attr(hook)(self)

def set_header(self, key, value):
key = encode(key)
value = encode(value)

if self.msg_root.has_key(key):
del self.msg_root[key]

self.msg_root[key] = value

def as_string(self):
"""validate, build message and convert to string"""
self.validate()


Loading…
取消
儲存