import MetaTrader5 as mt5 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import json import os # ---------------------------- # Load settings # ---------------------------- def load_config(filepath="config.json"): if not os.path.exists(filepath): raise FileNotFoundError(f"Config file not found: {filepath}") with open(filepath, "r") as f: return json.load(f) # ---------------------------- # Send email # ---------------------------- def send_email(subject, body, smtp_config): msg = MIMEMultipart() msg['From'] = smtp_config["sender_email"] msg['To'] = smtp_config["recipient_email"] msg['Subject'] = subject msg.attach(MIMEText(body, "plain")) try: with smtplib.SMTP(smtp_config["smtp_server"], smtp_config["smtp_port"]) as server: server.starttls() server.login(smtp_config["sender_email"], smtp_config["sender_password"]) server.send_message(msg) print(f"[EMAIL] Sent to {smtp_config['recipient_email']}") except Exception as e: print(f"[EMAIL ERROR] {e}") # ---------------------------- # Get account details # ---------------------------- def get_account_details(): info = mt5.account_info() if info is None: raise RuntimeError(f"Unable to fetch account info. Error: {mt5.last_error()}") # Build a clean text message details = ( f"MT5 ACCOUNT DETAILS\n" f"===================\n" f"Login: {info.login}\n" f"Name: {info.name}\n" f"Server: {info.server}\n" f"Balance: {info.balance}\n" f"Equity: {info.equity}\n" f"Leverage: {info.leverage}\n" f"Currency: {info.currency}\n" f"Trade Mode: {info.trade_mode}\n" ) return details # ---------------------------- # Main function # ---------------------------- def main(): config = load_config("config.json") smtp_config = { "smtp_server": "smtp.gmail.com", "smtp_port": 587, "sender_email": "ifairvaluegap@gmail.com", # your Gmail "sender_password": "pyxv pjnd jftb klnz", # Gmail App Password "recipient_email": "griffinskimutai@gmail.com" # where to send account details } # Initialize MT5 if mt5.initialize( path=config["mt5Pathway"], login=int(config["username"]), password=config["password"], server=config["server"] ): print("[MT5] Connection successful") try: account_text = get_account_details() send_email( subject="MT5 Account Details", body=account_text, smtp_config=smtp_config ) except Exception as e: send_email( subject="MT5 Account Info Error", body=str(e), smtp_config=smtp_config ) else: error_msg = f"[MT5] Connection failed: {mt5.last_error()}" print(error_msg) send_email( subject="MT5 Connection Failed", body=error_msg, smtp_config=smtp_config ) mt5.shutdown() # ---------------------------- # Run script # ---------------------------- if __name__ == "__main__": main()