stage-1: project bootstrap

Structure, config loader, personality/tools/memory from clawd, venv, 22 tests passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MoltBot Service
2026-02-13 10:20:55 +00:00
commit f2973aa76f
374 changed files with 59557 additions and 0 deletions

86
tools/email_send.py Normal file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env python3
"""
Simple SMTP email sender for echo@romfast.ro
Usage: python3 email_send.py "recipient@email.com" "Subject" "Body text"
"""
import smtplib
import ssl
import sys
import os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import formataddr
from pathlib import Path
# Load .env file
env_path = Path(__file__).parent.parent / '.env'
if env_path.exists():
with open(env_path) as f:
for line in f:
line = line.strip()
if line and not line.startswith('#') and '=' in line:
key, value = line.split('=', 1)
os.environ.setdefault(key, value)
# SMTP Configuration from environment
# Try Gmail first, fall back to romfast
if os.environ.get('GMAIL_PASSWORD'):
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 465
SMTP_USER = os.environ.get('GMAIL_USER', 'mmarius28@gmail.com')
SMTP_PASS = os.environ.get('GMAIL_PASSWORD', '')
else:
SMTP_SERVER = os.environ.get('EMAIL_SERVER', 'mail.romfast.ro')
SMTP_PORT = 465
SMTP_USER = os.environ.get('EMAIL_USER', 'echo@romfast.ro')
SMTP_PASS = os.environ.get('EMAIL_PASSWORD', '')
FROM_NAME = "Echo"
def send_email(to_email: str, subject: str, body: str, html: bool = False) -> dict:
"""Send an email via SMTP SSL"""
try:
# Create message
msg = MIMEMultipart("alternative")
msg["Subject"] = Header(subject, 'utf-8')
msg["From"] = formataddr((FROM_NAME, SMTP_USER))
msg["To"] = to_email
msg["Reply-To"] = "echo@romfast.ro"
# Attach body
if html:
msg.attach(MIMEText(body, "html", "utf-8"))
else:
msg.attach(MIMEText(body, "plain", "utf-8"))
# Connect and send
context = ssl.create_default_context()
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT, context=context) as server:
server.login(SMTP_USER, SMTP_PASS)
server.sendmail(SMTP_USER, to_email, msg.as_string())
return {"ok": True, "to": to_email, "subject": subject}
except Exception as e:
return {"ok": False, "error": str(e)}
if __name__ == "__main__":
if len(sys.argv) < 4:
print("Usage: python3 email_send.py <to> <subject> <body> [--html]")
sys.exit(1)
to = sys.argv[1]
subject = sys.argv[2]
body = sys.argv[3]
# Auto-detect HTML or use --html flag
# Check for common HTML patterns, not just doctype/html tags
body_lower = body.strip().lower()
has_html_tags = any(tag in body_lower for tag in ['<html', '<!doctype', '<div', '<p>', '<br', '<table', '<h1', '<h2', '<h3', '<span', '<style'])
is_html = "--html" in sys.argv or has_html_tags
result = send_email(to, subject, body, html=is_html)
import json
print(json.dumps(result))