From 0939719bacf0b71652b1dd1aaf918e842705e0fc Mon Sep 17 00:00:00 2001 From: Ismailn16 <ismailnoor.789@gmail.com> Date: Fri, 1 Mar 2024 03:55:41 +0000 Subject: [PATCH] recent update sendgrid system fully implemented. Next steps - create react project and create email design for all templates --- main.py | 305 ++++++++++++++++++++++++++++++++++++--- main2.py | 14 -- sendgrid.env | Bin 196 -> 58 bytes templates/fakeemail.html | 20 +++ templates/noinfo.html | 20 +++ templates/postemail.html | 19 +++ templates/test.html | 24 ++- testing.py | 3 + 8 files changed, 365 insertions(+), 40 deletions(-) delete mode 100644 main2.py create mode 100644 templates/fakeemail.html create mode 100644 templates/noinfo.html create mode 100644 templates/postemail.html create mode 100644 testing.py diff --git a/main.py b/main.py index e7c308c..237f6e7 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,11 @@ -from flask import Flask, render_template, request -import sendgrid -from sendgrid.helpers.mail import * +from flask import Flask, render_template, request, redirect +import os +from sendgrid import SendGridAPIClient +from sendgrid.helpers.mail import Mail app = Flask(__name__) -sg = sendgrid.SendGridAPIClient('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') +sg_api = os.environ.get('SENDGRID_API_KEY') +sg = SendGridAPIClient(sg_api) @app.route('/home', methods=['GET', 'POST']) @app.route('/') @@ -11,30 +13,293 @@ sg = sendgrid.SendGridAPIClient('SG.Yk1XrcZySTGZD6rJUXIFaA.ZElsodEc3Pm-Pk1BNwuBZ def home(): return render_template('test.html') +@app.route('/postemail', methods = ['GET', 'POST']) +def postemail(): + return render_template('postemail.html') + +@app.route('/noinfo', methods = ['GET', 'POST']) +def noinfo(): + return render_template('noinfo.html') + +@app.route('/fakeemail', methods = ['GET', 'POST']) +def failemail(): + return render_template('fakeemail.html') + @app.route('/process_form', methods=['POST']) -def process_data(): - user_firstname = request.form['firstname'] - user_lastname = request.form['lastname'] +def process_form(): user_email = request.form['UWEemail'] - user_issue = request.form['issue'] - user_info = request.form['furtherinfo'] if 'live.uwe.ac.uk' in user_email: - result = send_email(user_email, user_firstname, user_lastname) - return result + user_firstname = request.form['firstname'] + user_lastname = request.form['lastname'] + user_issue = request.form['issue'] + user_spec_issue = request.form['specissue'] + if user_issue == 'Reset Password': + resetpassword_email(user_email, user_firstname, user_lastname, user_issue) + return redirect('/postemail') + elif user_issue == 'MFA not working': + mfa_email(user_email, user_firstname, user_lastname, user_issue) + return redirect('/postemail') + elif user_issue == 'How to access marks': + marks_email(user_email, user_firstname, user_lastname, user_issue) + return redirect('/postemail') + elif user_issue == 'How to connect to UWEs WiFi': + wifi_email(user_email, user_firstname, user_lastname, user_issue) + elif (user_issue == 'Not Specified') and (user_spec_issue != ""): + spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + return redirect('/postemail') + else: + return redirect('/noinfo') else: - return "This email isn't a UWE Email, Goodbye." + return redirect('/fakeemail') + +def resetpassword_email(user_email, user_firstname, user_lastname, user_issue): + template_id = 'd-ffa70cf693e74289894e9305175a58f1' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_issue': user_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def mfa_email(user_email, user_firstname, user_lastname, user_issue): + template_id = 'd-7ddb1ea78ad54e29b1836974946f2d1f' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_issue': user_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def marks_email(user_email, user_firstname, user_lastname, user_issue): + template_id = 'd-57fd53429b1a4dc184e4847bd57f1ba5' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_issue': user_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data -app.route('/send_email', methods=['POST']) -def send_email(user_email, user_firstname, user_lastname): - from_email = 'uweitstestemail@gmail.com' - to_email = To(user_email) - subject = "UWE ITS Test Email" - content = Content("text/plain", "Hi " + user_firstname + " " + user_lastname + ", This is a test email as we are currently prototyping this system. Thank you for your support!") - mail = Mail(from_email, to_email, subject, content) - response = sg.client.mail.send.post(request_body=mail.get()) + response = sg.send(message) return "The email has been sent. Please check your junk if it has not appeared in your inbox." +def wifi_email(user_email, user_firstname, user_lastname, user_issue): + template_id = 'd-57fd53429b1a4dc184e4847bd57f1ba5' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_issue': user_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + if (user_spec_issue == 'Passwords'): + passwords_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'Blackboard'): + blackboard_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'Finance'): + finance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'Timetable'): + timetable_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'Personal Information'): + personal_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'WiFi'): + wifi_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'Attendance'): + attendance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + elif (user_spec_issue == 'UWE Software'): + software_spec_email(user_email, user_firstname, user_lastname, user_spec_issue) + + + +def passwords_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def blackboard_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def finance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def timetable_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def personal_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def wifi_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def attendance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." + +def software_spec_email(user_email, user_firstname, user_lastname, user_spec_issue): + template_id = 'euibhckdalihc;kns-9' + + substitution_data = { + 'user_firstname': user_firstname, + 'user_lastname': user_lastname, + 'user_spec_issue': user_spec_issue + } + + message = Mail(from_email='uweitstestemail@gmail.com', + to_emails=user_email, + ) + + message.template_id = template_id + message.dynamic_template_data = substitution_data + + response = sg.send(message) + return "The email has been sent. Please check your junk if it has not appeared in your inbox." if __name__ == '__main__': diff --git a/main2.py b/main2.py deleted file mode 100644 index b68255b..0000000 --- a/main2.py +++ /dev/null @@ -1,14 +0,0 @@ -import sendgrid -import os -from sendgrid.helpers.mail import * - -sg = sendgrid.SendGridAPIClient('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') -from_email = Email('uweitstestemail@gmail.com') -to_email = To('ismailnoor.102@gmail.com') -subject = "Sending with SendGrid is Fun" -content = Content("text/plain", "and easy to do anywhere, even with Python") -mail = Mail(from_email, to_email, subject, content) -response = sg.client.mail.send.post(request_body=mail.get()) -print(response.status_code) -print(response.body) -print(response.headers) \ No newline at end of file diff --git a/sendgrid.env b/sendgrid.env index f3cd8817d358e5aa1922b95483ada2b23fe212ff..9ed928ef9eda737934646cdce1b43cc8d161370d 100644 GIT binary patch delta 12 TcmX@YXf?rvO`U<4fr|kE6PE%A delta 151 zcmcCI!Z^XCKA6FsL64!5!IHt4A&0?(A&()2L6;$fp_0LwA)g_bp^71l!J8qS!H~h1 zA%Y=;A&^0jA(z32A%G!`!HXe<p^PDd!H6N0A&4QF!Gpn^!HJ=mA%h`{!JWZ~ApmTW z2}3D^J3~H$34<Sl34=L9AVV%gDML1c6GJ*ffgnQ;gDFEKgDyiTgE|8*0~Z4T68RYU diff --git a/templates/fakeemail.html b/templates/fakeemail.html new file mode 100644 index 0000000..4294cbb --- /dev/null +++ b/templates/fakeemail.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en-GB"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> +</head> + +<body> + <div> + <form method="post" action="/home"> + <h1>The email entered is not a UWE email. Please press the button below and enter the correct + credentials.</h1> + <button>Home</button> + </form> + + + </div> +</body> \ No newline at end of file diff --git a/templates/noinfo.html b/templates/noinfo.html new file mode 100644 index 0000000..9193540 --- /dev/null +++ b/templates/noinfo.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en-GB"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> +</head> + +<body> + <div> + <form method="post" action="/home"> + <h1>You have not entered any information. After clicking the 'Home' button below, Please select 'Not + Specified' and explain your issue in the text box provided.</h1> + <button>Home</button> + </form> + + + </div> +</body> \ No newline at end of file diff --git a/templates/postemail.html b/templates/postemail.html new file mode 100644 index 0000000..0390cf6 --- /dev/null +++ b/templates/postemail.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html lang="en-GB"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> +</head> + +<body> + <div> + <form method="post" action="/home"> + <h1>The email has been sent. Please check your junk if it has not appeared in your inbox</h1> + <button>Home</button> + </form> + + + </div> +</body> \ No newline at end of file diff --git a/templates/test.html b/templates/test.html index 035f61e..f8d7fc0 100644 --- a/templates/test.html +++ b/templates/test.html @@ -24,15 +24,27 @@ <div> <label for="issue">Issue:</label> <select name="issue" id-="issue"> - <option value="issue1">Issue 1</option> - <option value="issue2">Issue 2</option> - <option value="issue...">Issue...</option> + <option value="Reset Password">Reset Password</option> + <option value="MFA not working">MFA not working</option> + <option value="How to access marks">How to access my marks</option> + <option value="How to connect to UWEs WiFi">How to connect to UWE'S WiFi</option> + <option value="Not Specified">Not Specified</option> </select> </div> <div> - <label for="furtherinfo">Please explain your issue in detail:</label> - <input type="text" id="furtherinfo" placeholder="Please explain your issue in detail" name="furtherinfo" - maxlength="1000" required> + <label for="specissue">If you selected 'Not Specified' in the box above, please select the topic that your + issue is most related to:</label> + <select name="specissue" id-="specissue"> + <option value="Passwords">Password Related</option> + <option value="Blackboard">Blackboard</option> + <option value="Finance">Issues relating to Finance</option> + <option value="Timetable">Timetable Related</option> + <option value="Personal Information">Personal Information</option> + <option value="WiFi">WiFi</option> + <option value="Attendance">Issues relating to Attendance</option> + <option value="UWE Software">Issues relating to UWE Software</option> + </select> + </div> <button>Submit</button> </form> diff --git a/testing.py b/testing.py new file mode 100644 index 0000000..d85c563 --- /dev/null +++ b/testing.py @@ -0,0 +1,3 @@ +import os +api_key = os.environ.get('SENDGRID_API_KEY') +print(api_key) \ No newline at end of file -- GitLab