commit cdf6a254f1cf79f6961da2e04ca08c110376a57e Author: rainmaker Date: Tue Jul 16 23:28:32 2024 +0200 Add main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..0d9f027 --- /dev/null +++ b/main.py @@ -0,0 +1,111 @@ +import mysql.connector +from datetime import date, datetime +from datetime import timedelta + +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText + +multiple_lines = "" +dbhost = '192.168.x' +port = '3306' +username = 'xxx' +password = 'xxx' +database = 'xxx' + + +def add_line_email(line): + global multiple_lines + multiple_lines += line + "\n" + + +def send_email(subject, body, recipients): + # Email configuration + sender_email = '' + smtp_server = 'smtp.eu.mailgun.org' + smtp_port = 587 + + # Your email login credentials + email_username = 'xxx' + email_password = 'xxx' + + # Create a multipart message and set headers + message = MIMEMultipart() + message['From'] = sender_email + message['To'] = ', '.join(recipients) + message['Subject'] = subject + + # Add body to email + message.attach(MIMEText(body, 'plain')) + + # Connect to SMTP server and send email + with smtplib.SMTP(smtp_server, smtp_port) as server: + server.starttls() # Secure the connection + server.login(email_username, email_password) + server.send_message(message) + + +d = date.today() +first_last_month = (d - timedelta(days=d.day)).replace(day=1) +end_last_month = (d - timedelta(days=d.day)) +first_last_month_str = first_last_month.strftime("%Y-%m-%d") +end_of_last_month_str = end_last_month.strftime("%Y-%m-%d") +first_last_month_str = datetime.strptime(first_last_month_str, "%Y-%m-%d") +end_of_last_month_str = datetime.strptime(end_of_last_month_str, "%Y-%m-%d") +first_timestamp = int(first_last_month_str.timestamp()) +last_timestamp = int(end_of_last_month_str.timestamp()) + +try: + connection = mysql.connector.connect( + host=dbhost, + port=port, + user=username, + password=password, + database=database + ) + if connection.is_connected(): + print('Connected to database, starting report generation') + + cursor = connection.cursor() + + msgidend = '0000000000' + startdate = (str(first_timestamp) + msgidend) + enddate = (str(last_timestamp) + msgidend) + print('Start messageid ID: ' + startdate + ' ' + str(first_last_month)) + add_line_email('Start messageid ID: ' + startdate + ' ' + str(first_last_month)) + print('End messageid ID: ' + enddate + ' ' + str(end_last_month)) + add_line_email('End messageid ID: ' + enddate + ' ' + str(end_last_month)) + prefix52 = '52%' + prefix55 = '55%' + query_all = "SELECT COUNT(*) FROM smpp_server.smpp_log WHERE message_id > %s AND message_id < %s" + query_prefix = "SELECT COUNT(*) FROM smpp_server.smpp_log WHERE message_id > %s AND message_id < %s " \ + "AND destination_address LIKE %s" + + cursor.execute(query_all, (startdate, enddate)) + rows = cursor.fetchall() + result = rows + print('Count total: ' + str(result[0][0])) + add_line_email('Count total: ' + str(result[0][0])) + + cursor.execute(query_prefix, (startdate, enddate, prefix52)) + rows_prefix = cursor.fetchall() + result_prefix = rows_prefix + print('Count for prefix +52: ' + str(result_prefix[0][0])) + add_line_email('Count for prefix +52: ' + str(result_prefix[0][0])) + + cursor.execute(query_prefix, (startdate, enddate, prefix55)) + rows_prefix2 = cursor.fetchall() + result_prefix2 = rows_prefix2 + print('Count for prefix +55: ' + str(result_prefix2[0][0])) + add_line_email('Count for prefix +55: ' + str(result_prefix2[0][0])) + +except mysql.connector.Error as e: + print(f'Error connecting to database: {e}') + +subject = ('SoMo Report for' + ' ' + str(first_last_month)) +body = multiple_lines +recipients = ['mark@42tele.com', 'xxx@xxx, 'xxx@xxx'] +#recipients = ['mark@42tele.com'] + +print('Sending email..') +send_email(subject, body, recipients)