sql_to_xlsx/main.py
2025-01-28 01:18:42 +01:00

117 lines
3.7 KiB
Python

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.xxx',
user='xxx',
password='xxx',
database='xxx',
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_emails, sender_email, filename, smtp_server, smtp_port, smtp_user, smtp_password):
try:
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = ', '.join(recipient_emails) # Join multiple recipients
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 = '';"""
results, headers = connect_db(sql_query)
excel_file_name = "Mes_Bird_Dir_price_list.xlsx"
write_to_excel(results, headers, excel_file_name)
subject = "MEXEDIA PRICE CHANGE for MessageBird- Mes_Bird_Dir"
body = """Dear Valued Customer,
We would like to inform you of the following price changes on your account Mes_Bird_Dir.
Please note that the changes are effective immediately, any messages sent from now on will be charged based on the new price.
If you require any further assistance or clarification, please do not hesitate to contact your Account Manager or our Support Team on support.sms@mexedia.com and we'll gladly assist you further.
Best Regards,
Mexedia Customer Support
Support | support.sms@mexedia.com
Sales | sales-sms@mexedia.com
www.mexedia.com"""
recipient_emails = ["xxx@xxx.com", "xxx@xxx.com"]
sender_email = "donotreply@xxx.mt"
smtp_server = "smtp.eu.mailgun.org"
smtp_port = 587
smtp_user = 'xxx'
smtp_password = 'xx-xx-xx'
send_email(
subject, body, recipient_emails, sender_email, excel_file_name, smtp_server, smtp_port, smtp_user, smtp_password
)