summaryrefslogtreecommitdiff
path: root/yaksh/send_emails.py
diff options
context:
space:
mode:
authorPrabhu Ramachandran2017-05-05 17:47:27 +0530
committerGitHub2017-05-05 17:47:27 +0530
commitb6993d79ae2f0d18375555f5ada72b52a3a2e066 (patch)
tree19326254303a5ff03697371ed198f89e1145db9b /yaksh/send_emails.py
parent4cd448769c6cc230b7a33a1848cc45873b578468 (diff)
parentd7e6430d8c48381c6660906ab3a96251824f9031 (diff)
downloadonline_test-b6993d79ae2f0d18375555f5ada72b52a3a2e066.tar.gz
online_test-b6993d79ae2f0d18375555f5ada72b52a3a2e066.tar.bz2
online_test-b6993d79ae2f0d18375555f5ada72b52a3a2e066.zip
Merge pull request #290 from adityacp/email_verifcation_testing
Email verification testing
Diffstat (limited to 'yaksh/send_emails.py')
-rw-r--r--yaksh/send_emails.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/yaksh/send_emails.py b/yaksh/send_emails.py
new file mode 100644
index 0000000..37736d5
--- /dev/null
+++ b/yaksh/send_emails.py
@@ -0,0 +1,58 @@
+# Local imports
+try:
+ from string import letters
+except ImportError:
+ from string import ascii_letters as letters
+from string import digits, punctuation
+import hashlib
+from random import randint
+from textwrap import dedent
+import smtplib
+
+# Django imports
+from django.utils.crypto import get_random_string
+from django.conf import settings
+from django.core.mail import send_mass_mail, send_mail
+
+
+def generate_activation_key(username):
+ """ Generate hashed secret key for email activation """
+ chars = letters + digits + punctuation
+ secret_key = get_random_string(randint(10, 40), chars)
+ return hashlib.sha256((secret_key + username).encode('utf-8')).hexdigest()
+
+
+def send_user_mail(user_mail, key):
+ """ Send mail to user whose email is to be verified
+ This function should get two args i.e user_email and secret_key.
+ The activation url is generated from settings.PRODUCTION_URL and key.
+ """
+ try:
+ to = user_mail
+ subject = 'Yaksh Email Verification'
+ message = dedent("""\
+ To activate your account and verify your email address,
+ please click the following link:
+ {0}/exam/activate/{1}
+ If clicking the link above does not work,
+ copy and paste the URL in a new browser window instead.
+ For any issue, please write us on {2}
+
+ Regards
+ Yaksh Team
+ """.format(settings.PRODUCTION_URL, key, settings.REPLY_EMAIL)
+ )
+
+ send_mail(subject, message, settings.SENDER_EMAIL, [to])
+
+ msg = "An activation link is sent to your registered email.\
+ Please activate the link within 20 minutes."
+ success = True
+
+ except Exception as exc_msg:
+ msg = """Error: {0}. Please check your email address.\
+ If email address is correct then
+ Please contact {1}.""".format(exc_msg, settings.REPLY_EMAIL)
+ success = False
+
+ return success, msg