커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
time.sleep(1) 이부분에서 무한 로딩..
[왕초보] ChatGPT 300% 활용하기 v0
4주차
북마크
김*
댓글
3
추천
0
조회수
6
조회수
6
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


자꾸 아래 코드에서 무한 로딩이 되면서 메일도 오지 않습니다.



스파르타 즉문즉답






# schedule 라이브러리 설치

!pip install schedule


import openpyxl

import smtplib

import schedule

import time

import threading

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from pytz import timezone

from datetime import datetime


# 엑셀 파일에서 데이터 읽기

file_path = 'customer_data_test.xlsx'

sheet_name = 'test_name_email'  # 실제 시트 이름으로 변경


# openpyxl을 사용하여 엑셀 파일 읽기

wb = openpyxl.load_workbook(file_path)

sheet = wb[sheet_name]


# 이메일 전송 함수 정의

def send_email(to_email, subject, body):

    from_email = 'nagaon50@gmail.com'  # 실제 발신자 이메일 주소

    password = 'cbrk yina tsql dunp'       # 생성된 애플리케이션 비밀번호



    # 이메일 메시지 설정

    msg = MIMEMultipart()

    msg['From'] = from_email

    msg['To'] = to_email

    msg['Subject'] = subject


    msg.attach(MIMEText(body, 'plain'))


    # Gmail SMTP 서버 설정 및 이메일 전송

    try:

        server = smtplib.SMTP('smtp.gmail.com', 587)  # Gmail SMTP 서버 및 포트

        server.starttls()

        server.login(from_email, password)

        text = msg.as_string()

        server.sendmail(from_email, to_email, text)

        server.quit()

        print(f"Email sent to {to_email}")

    except Exception as e:

        print(f"Failed to send email to {to_email}: {e}")


# 이메일 보내기 작업 예약

def send_emails():

    subject = "귀여운 Salemale 메일이 도착했어요!"

    body_template = """\

안녕하세요, {name}님!


저희 Salemale 앱을 사랑해주셔서 감사합니다! 특별한 소식을 전해드릴게요. Salemale 앱을 이용해 즐거운 시간 보내시길 바라며, 더 많은 사랑 부탁드려요! 😊


감사합니다,

Salemale 팀 드림

"""


    # 엑셀 시트의 데이터를 순회하며 이메일 전송

    for row in sheet.iter_rows(min_row=2, values_only=True):  # 첫 번째 행은 헤더이므로 2행부터 시작

        name, email = row

        body = body_template.format(name=name)

        send_email(email, subject, body)


# 스케줄링을 백그라운드에서 실행하기 위한 함수 정의

def run_schedule():

    while True:

        schedule.run_pending()

        time.sleep(1)  # 1초마다 스케줄 확인


# 매주 화요일 오후 9시 11분에 이메일 보내기 작업 예약

schedule.every().tuesday.at("21:11").do(send_emails)


# 스케줄링을 백그라운드에서 실행

thread = threading.Thread(target=run_schedule)

thread.daemon = True

thread.start()


# 메인 스레드를 유지하기 위해 대기

try:

    while True:

        time.sleep(1)

except (KeyboardInterrupt, SystemExit):

    print("작업을 종료합니다.")


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴