@@ -116,6 +116,7 @@ def init(site, sites_path=None): | |||
local.module_app = None | |||
local.app_modules = None | |||
local.system_settings = None | |||
local.user = None | |||
local.user_obj = None | |||
@@ -7,7 +7,7 @@ | |||
{ | |||
"fieldname": "localization", | |||
"fieldtype": "Section Break", | |||
"label": "Localization", | |||
"label": "", | |||
"permlevel": 0 | |||
}, | |||
{ | |||
@@ -20,6 +20,12 @@ | |||
"reqd": 1, | |||
"search_index": 0 | |||
}, | |||
{ | |||
"fieldname": "column_break_3", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"fieldname": "time_zone", | |||
"fieldtype": "Select", | |||
@@ -30,7 +36,7 @@ | |||
{ | |||
"fieldname": "date_and_number_format", | |||
"fieldtype": "Section Break", | |||
"label": "Date and Number Format", | |||
"label": "", | |||
"permlevel": 0 | |||
}, | |||
{ | |||
@@ -41,6 +47,12 @@ | |||
"permlevel": 0, | |||
"reqd": 1 | |||
}, | |||
{ | |||
"fieldname": "column_break_7", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"fieldname": "number_format", | |||
"fieldtype": "Select", | |||
@@ -80,6 +92,12 @@ | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"fieldname": "column_break_13", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"description": "Run scheduled jobs only if checked", | |||
"fieldname": "enable_scheduler", | |||
@@ -96,11 +114,39 @@ | |||
"permlevel": 0, | |||
"precision": "", | |||
"report_hide": 1 | |||
}, | |||
{ | |||
"fieldname": "email", | |||
"fieldtype": "Section Break", | |||
"label": "EMail", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"description": "Your organization name and address for the email footer.", | |||
"fieldname": "email_footer_address", | |||
"fieldtype": "Small Text", | |||
"label": "Email Footer Address", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"fieldname": "column_break_18", | |||
"fieldtype": "Column Break", | |||
"permlevel": 0, | |||
"precision": "" | |||
}, | |||
{ | |||
"fieldname": "disable_standard_email_footer", | |||
"fieldtype": "Check", | |||
"label": "Disable Standard Email Footer", | |||
"permlevel": 0, | |||
"precision": "" | |||
} | |||
], | |||
"icon": "icon-cog", | |||
"issingle": 1, | |||
"modified": "2015-05-18 05:11:38.759688", | |||
"modified": "2015-05-21 07:15:55.682132", | |||
"modified_by": "Administrator", | |||
"module": "Core", | |||
"name": "System Settings", | |||
@@ -72,13 +72,13 @@ def send(recipients=None, sender=None, subject=None, message=None, reference_doc | |||
unsubscribe_method, unsubscribe_params) | |||
# add to queue | |||
email_content = add_unsubscribe_link(email_content, email, reference_doctype, reference_name, | |||
unsubscribe_url, unsubscribe_message) | |||
email_content = add_unsubscribe_link(email_content, email, reference_doctype, | |||
reference_name, unsubscribe_url, unsubscribe_message) | |||
email_text_context += "\n" + _("Unsubscribe link: {0}").format(unsubscribe_url) | |||
email_text_context += "\n" + _("This email was sent to {0}. To unsubscribe click on this link: {1}").format(email, unsubscribe_url) | |||
add(email, sender, subject, email_content, email_text_context, reference_doctype, reference_name, attachments, reply_to, | |||
cc, message_id, send_after) | |||
add(email, sender, subject, email_content, email_text_context, reference_doctype, | |||
reference_name, attachments, reply_to, cc, message_id, send_after) | |||
def add(email, sender, subject, formatted, text_content=None, | |||
reference_doctype=None, reference_name=None, attachments=None, reply_to=None, | |||
@@ -121,11 +121,12 @@ def check_bulk_limit(recipients): | |||
BulkLimitCrossedError) | |||
def add_unsubscribe_link(message, email, reference_doctype, reference_name, unsubscribe_url, unsubscribe_message): | |||
unsubscribe_link = """<div style="padding: 7px; margin-top: 7px;"> | |||
<a href="{unsubscribe_url}" style="color: #8D99A6; text-decoration: none; font-size: 85%;" target="_blank"> | |||
{unsubscribe_message} | |||
unsubscribe_link = """<div style="padding: 7px; text-align: center;"> | |||
<a href="{unsubscribe_url}" style="color: #8D99A6; text-decoration: none; | |||
target="_blank">{email}. {unsubscribe_message}. | |||
</a> | |||
</div>""".format(unsubscribe_url = unsubscribe_url, | |||
email= _("This email was sent to {0}").format(email), | |||
unsubscribe_message = unsubscribe_message or _("Unsubscribe from this list")) | |||
message = message.replace("<!--unsubscribe link here-->", unsubscribe_link) | |||
@@ -73,13 +73,14 @@ | |||
"icon": "icon-envelope", | |||
"idx": 1, | |||
"in_create": 1, | |||
"modified": "2015-04-01 10:00:20.892939", | |||
"modified": "2015-05-21 07:26:13.627637", | |||
"modified_by": "Administrator", | |||
"module": "Email", | |||
"name": "Bulk Email", | |||
"owner": "Administrator", | |||
"permissions": [ | |||
{ | |||
"delete": 1, | |||
"email": 1, | |||
"permlevel": 0, | |||
"print": 1, | |||
@@ -5,7 +5,7 @@ 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.data import get_url, scrub_urls, strip, expand_relative_urls | |||
from frappe.utils import get_url, scrub_urls, strip, expand_relative_urls, cint | |||
import email.utils | |||
from markdown2 import markdown | |||
@@ -232,10 +232,11 @@ def get_footer(footer=None): | |||
if email_account and email_account.footer: | |||
footer += email_account.footer | |||
else: | |||
for default_mail_footer in frappe.get_hooks("default_mail_footer"): | |||
footer += default_mail_footer | |||
footer += "<!--unsubscribe link here-->" | |||
if not cint(frappe.db.get_default("disable_standard_email_footer")): | |||
for default_mail_footer in frappe.get_hooks("default_mail_footer"): | |||
footer += default_mail_footer | |||
return footer |
@@ -5,9 +5,11 @@ | |||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |||
<title>{{ subject or "" }}</title> | |||
</head> | |||
<body style="line-height: 1.6;"> | |||
<body style="line-height: 1.5; color: #36414C;"> | |||
<!-- body --> | |||
<div style="font-family: Helvetica, Arial, sans-serif; font-size: 14px;">{{ content }}</div> | |||
<div style="font-family: Helvetica, Arial, sans-serif; font-size: 14px; padding: 10px;"> | |||
{{ content }} | |||
</div> | |||
<!-- footer --> | |||
<div class="email-footer" style="margin-top: 30px; font-family: Helvetica, Arial, sans-serif; font-size: 11px;" | |||