import mysql.connector from openpyxl import Workbook import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText from email import encoders import os def connect_db(sql_query): try: connection = mysql.connector.connect( host='192.168.145.196', user='sql_to_xlsx', password='2Uce5Uc5', database='smsgw_control', auth_plugin='mysql_native_password', ssl_disabled=True, use_pure=True ) cursor = connection.cursor() cursor.execute(sql_query) results = cursor.fetchall() column_headers = [i[0] for i in cursor.description] return results, column_headers except mysql.connector.Error as e: print(f"Error connecting to DB: {e}") return None def write_to_excel(data, headers, file_name): workbook = Workbook() sheet = workbook.active sheet.append(headers) for row in data: sheet.append(row) workbook.save(file_name) print(f"Excel file saved as {file_name}") def send_email(subject, body, recipient_email, sender_email, filename, smtp_server, smtp_port, smtp_user, smtp_password): try: msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = recipient_email msg['Subject'] = subject msg.attach(MIMEText(body, 'plain')) with open(filename, 'rb') as attachment: part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header( 'Content-Disposition', f'attachment; filename={os.path.basename(filename)}' ) msg.attach(part) with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(smtp_user, smtp_password) server.send_message(msg) server.quit() print("Email sent!") except Exception as e: print(f"Error: {e}") if __name__ == "__main__": sql_query = """SELECT countryname_eng as Countryname, ifnull(network, 'Default') as Network, routingprices.mcc as MCC, routingprices.mnc as MNC, route, price FROM smsgw_control.routingprices LEFT JOIN smsgw_control.E212_MCC ON routingprices.mcc = smsgw_control.E212_MCC.MCC LEFT JOIN smsgw_control.E212_MCCMNC on routingprices.mcc = smsgw_control.E212_MCCMNC.MCC and routingprices.mnc = smsgw_control.E212_MCCMNC.MNC WHERE route = 'M1' AND clientid = '13283';""" results, headers = connect_db(sql_query) excel_file_name = "pricelist.xlsx" write_to_excel(results, headers, excel_file_name) subject = "Mexedia pricelist" body = "Please find attached your pricelist" recipient_email = "mark@42tele.com" sender_email = "mark@42tele.com" smtp_server = "smtp.eu.mailgun.org" smtp_port = 587 smtp_user = 'stps@monitoring.fortytwo.mt' smtp_password = 'f18c48a7076c868bef91eb8f0ca59d33-9776af14-d2648a16' send_email( subject, body, recipient_email, sender_email, excel_file_name, smtp_server, smtp_port, smtp_user, smtp_password )