
진짜 이것 때문에 아무것도 못했습니다. 다른 사람들은 어떻게 진행한걸까요?
py 파일 내용을 토대로 수정한 부분이 오류가 계속 떠서 엄한 chatGPT한테만 체감상으로 수백번은 물어본 것 같아요.
너무 힘들어서 다 포기하고 첨부된 py파일은 못쓸거같아서 새롭게 chatGPT한테 질문했습니다.
pandas를 import 해서 가져오니 잘되더군요.
진짜 별의 별거 다 해봤고 7시간 걸렸습니다.... 첨부된 py를 수정한 결과는 도저히 못풀겠습니다.
작성한 코드 및 에러 메세지
import openpyxl
import smtplib
import schedule
import time
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime
import pytz
def send_email():
smtp_server = 'smtp.gmail.com'
smtp_port = 587
# 앱 비밀번호 관련 정보 입력
smtp_username = 'kingthecoding@gmail.com'
smtp_password = 'ufzq atlt htzf uabv'
# 엑셀 파일 이름 입력
wb = openpyxl.load_workbook('source.xlsx')
# 시트 이름 입력
ws = wb['marketer']
# 이메일 보낼 사람과 이메일 정보 가져오기
name_list = []
email_list = []
for row in ws.iter_rows(min_row=2, values_only=True):
name = row[0]
email = row[1]
name_list.append(name)
email_list.append(email)
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(smtp_username, smtp_password)
for name, email in zip(name_list, email_list):
# 메일 제목, 본문 내용 작성
mail_subject = f"주간 업데이트 - {name}"
mail_body = f"안녕하세요, {name}님!\n이번 주에 대한 주간 업데이트입니다."
# 메일 생성
message = MIMEMultipart()
message['From'] = smtp_username
message['To'] = email
message['Subject'] = mail_subject
# 메일 본문 추가
message.attach(MIMEText(mail_body, 'plain'))
# 메일 전송
smtp.send_message(message)
# 매주 수요일 11:50 시에 메일 보내기
def Wednesday_email():
now = datetime.now(pytz.timezone('Asia/Seoul'))
if now.strftime("%A") == "Wednesday" and now.strftime("%H:%M") == "11:54":
send_email()
schedule.every().minute.do(Wednesday_email)
while True:
schedule.run_pending()
time.sleep(1)
에러메세지들
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-13-41da5dfe0e1f> in <cell line: 62>()
61 schedule.every().minute.do(Wednesday_email)
62 while True:
---> 63 schedule.run_pending()
64 time.sleep(1)
7 frames
/usr/local/lib/python3.10/dist-packages/schedule/__init__.py in run_pending()
820 :data:`default scheduler instance <default_scheduler>`.
821 """
--> 822 default_scheduler.run_pending()
823
824
/usr/local/lib/python3.10/dist-packages/schedule/__init__.py in run_pending(self)
98 runnable_jobs = (job for job in self.jobs if job.should_run)
99 for job in sorted(runnable_jobs):
--> 100 self._run_job(job)
101
102 def run_all(self, delay_seconds: int = 0) -> None:
/usr/local/lib/python3.10/dist-packages/schedule/__init__.py in _run_job(self, job)
170
171 def _run_job(self, job: "Job") -> None:
--> 172 ret = job.run()
173 if isinstance(ret, CancelJob) or ret is CancelJob:
174 self.cancel_job(job)
/usr/local/lib/python3.10/dist-packages/schedule/__init__.py in run(self)
691
692 logger.debug("Running job %s", self)
--> 693 ret = self.job_func()
694 self.last_run = datetime.datetime.now()
695 self._schedule_next_run()
<ipython-input-13-41da5dfe0e1f> in Wednesday_email()
57 now = datetime.now(pytz.timezone('Asia/Seoul'))
58 if now.strftime("%A") == "Wednesday" and now.strftime("%H:%M") == "11:54":
---> 59 send_email()
60
61 schedule.every().minute.do(Wednesday_email)
<ipython-input-13-41da5dfe0e1f> in send_email()
51
52 # 메일 전송
---> 53 smtp.send_message(message)
54
55 # 매주 수요일 11:50 시에 메일 보내기
/usr/lib/python3.10/smtplib.py in send_message(self, msg, from_addr, to_addrs, mail_options, rcpt_options)
978 if international:
979 g = email.generator.BytesGenerator(
--> 980 bytesmsg, policy=msg.policy.clone(utf8=True))
981 mail_options = (*mail_options, 'SMTPUTF8', 'BODY=8BITMIME')
982 else:
/usr/lib/python3.10/email/_policybase.py in clone(self, **kw)
70 for attr, value in kw.items():
71 if not hasattr(self, attr):
---> 72 raise TypeError(
73 "{!r} is an invalid keyword argument for {}".format(
74 attr, self.__class__.__name__))
TypeError: 'utf8' is an invalid keyword argument for Compat32
이렇게 뜨니 chatGPT가 시키는 대로 해도 안되고 뤼튼켜서 해도 또 같은 문제 발생하고 더 심하게 오류가 11개 뜨고 무한반복해서 못할거같네요
