可能性の模索

テーマ:今日から10年前の歴史を知る

使用したソースコード
1,import smtplib
2,import datetime
3,import requests

ソースコード

import smtplib
        import datetime
        import requests
        from email.mime.text import MIMEText
        from email.mime.multipart import MIMEMultipart
        
        # 10年前の日付を計算
        today = datetime.date.today()
        ten_years_ago = today.replace(year=today.year - 10)
        
        # 10年前の出来事を取得する
        def get_historical_events(date):
            # 'history.muffinlabs.com' API を使用して、10年前のその日の出来事を取得
            url = f"https://history.muffinlabs.com/date/{date.month}/{date.day}"
            response = requests.get(url)
            
            # レスポンスが成功した場合
            if response.status_code == 200:
                data = response.json()
                events = data.get('data', {}).get('Events', [])
                return events
            else:
                # データを取得できなかった場合
                return None
        
        # メール送信関数
        def send_email(subject, body, to_email):
            # メールの送信元アドレスとパスワード
            from_email = "xxx"
            login_password = "xxx"
        
            # メールのヘッダーと本文を作成
            msg = MIMEMultipart()
            msg['From'] = from_email
            msg['To'] = to_email
            msg['Subject'] = subject
        
            msg.attach(MIMEText(body, 'plain'))  # 本文を追加
        
            # サーバーに接続してメールを送信
            smtp_server = "smtp-mail.outlook.com"
            port = 587
            try:
                # サーバーに接続
                server = smtplib.SMTP(smtp_server, port)
                server.starttls()  
                server.login(from_email, login_password)  
        
                # メール送信
                server.sendmail(from_email, to_email, msg.as_string())
                print("メールが送信されました。")
            except Exception as e:
                print(f"メール送信エラー: {e}")
            finally:
                server.quit()  # サーバーを切断
        
        # メイン処理
        def main():
            # 10年前の出来事を取得
            events = get_historical_events(ten_years_ago)
            
            if events:
                # 出来事が取得できた場合、メール本文を作成
                event_details = "\n".join([f"{event['year']}: {event['text']}" for event in events])
                subject = f"10年前の今日 ({ten_years_ago}) の出来事"
                body = f"10年前の{ten_years_ago}に起こった出来事:\n\n{event_details}"
            else:
                # 出来事が取得できなかった場合
                subject = f"10年前の今日 ({ten_years_ago}) の出来事"
                body = "10年前の今日の出来事は取得できませんでした。"
            
            # 送信先メールアドレスを指定
            to_email = "xxx"  # ここで送信先を設定
            
            # メールを送信
            send_email(subject, body, to_email)
        
        # メイン処理を実行
        if __name__ == "__main__":
            main()
        
感想 メールの送信をする機能を取り入れるのが大変でした。
またうまくいかなかったところもあった。本当は10年前の情報だけほしかったが、うまく組めず
その日に起きたこと全部が表示されてしまった。