diff --git a/frappe/templates/includes/contact.js b/frappe/templates/includes/contact.js index fb0b73ff80..51dc5dc322 100644 --- a/frappe/templates/includes/contact.js +++ b/frappe/templates/includes/contact.js @@ -28,11 +28,8 @@ frappe.ready(function() { sender: email, message: message, callback: function(r) { - if(r.message==="okay") { + if (!r.exc) { frappe.msgprint('{{ _("Thank you for your message") }}'); - } else { - frappe.msgprint('{{ _("There were errors") }}'); - console.log(r.exc); } $(':input').val(''); } diff --git a/frappe/www/contact.py b/frappe/www/contact.py index cf26539ff4..15d639be97 100644 --- a/frappe/www/contact.py +++ b/frappe/www/contact.py @@ -3,7 +3,7 @@ import frappe from frappe import _ -from frappe.utils import now +from frappe.rate_limiter import rate_limit sitemap = 1 @@ -22,38 +22,17 @@ def get_context(context): return out -max_communications_per_hour = 1000 - - @frappe.whitelist(allow_guest=True) -def send_message(subject="Website Query", message="", sender=""): - if not message: - frappe.response["message"] = "Please write something" - return +@rate_limit(limit=1000, seconds=60 * 60, methods=["POST"]) +def send_message(sender, message, subject="Website Query"): + if forward_to_email := frappe.db.get_single_value("Contact Us Settings", "forward_to_email"): + frappe.sendmail(recipients=forward_to_email, reply_to=sender, content=message, subject=subject) - if not sender: - frappe.response["message"] = "Email Address Required" - return - - # guest method, cap max writes per hour - if ( - frappe.db.sql( - """select count(*) from `tabCommunication` - where `sent_or_received`="Received" - and TIMEDIFF(%s, modified) < '01:00:00'""", - now(), - )[0][0] - > max_communications_per_hour - ): - frappe.response[ - "message" - ] = "Sorry: we believe we have received an unreasonably high number of requests of this kind. Please try later" - return - - # send email - forward_to_email = frappe.db.get_single_value("Contact Us Settings", "forward_to_email") - if forward_to_email: - frappe.sendmail(recipients=forward_to_email, sender=sender, content=message, subject=subject) + frappe.sendmail( + recipients=sender, + content="Thank you for reaching out to us. We will get back to you at the earliest.", + subject="We've received your query!", + ) # add to to-do ? frappe.get_doc( @@ -66,5 +45,3 @@ def send_message(subject="Website Query", message="", sender=""): status="Open", ) ).insert(ignore_permissions=True) - - return "okay"