커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
2-9차에서 메일 전송 자동화 에러코드 문의드립니다.
undefined주차
북마크
한*석
댓글
3
추천
0
조회수
12
조회수
12
답변 완료

import openpyxl

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import schedule

import time


def send_email():

  # Gmail SMTP 서버 설정

  smtp_server = 'smtp.gmail.com'

  smtp_port = 587

  smtp_username = 'jujunara2670@gmail.com'

  smtp_password = ''


  # Excel 파일에서 이름과 이메일 추출

  wb = openpyxl.load_workbook('customer_data_test.xlsx')

  ws = wb['test_name_email']


  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)


  # Gmail 서버 연결

  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\n저희 앱을 이용해주셔서 감사합니다. {name}님이 우리 앱에 10번 이상 로그인하시면 자그마한 선물을 드립니다! 하루에 최대 1번 로그인 가능합니다. 많은 이용 부탁드립니다.\n\n감사합니다.\n\n- salemale 팀'


      # 메일 생성

      message = MIMEMultipart()

      message['From'] = smtp_username

      message['To'] = email

      message['Subject'] = mail_subject


      # 메일 본문 추가

      message.attach(MIMEText(mail_body))


      # 메일 전송

      smtp.send_message(message)


# 스케쥴러 설정

schedule.every(1).minutes.do(send_email)


while True:

  schedule.run_pending()

  time.sleep(1)


========================================================================


위 소스 입력 후 코랩을 실행 시켰습니다.


메일은 제가 지정한 수신자 메일 주소로 들어옵니다.


문제는 1분에 한번씩 오지 않는다는것과 아래의 오류 코드가 뜨는데 무엇때문인지 모르겠습니다.


============ 오류 코드 ==========================

SMTPRecipientsRefused                     Traceback (most recent call last)
<ipython-input-7-1856a1b248cf> in <cell line: 53>()
     52 
     53 while True:
---> 54     schedule.run_pending()
     55     time.sleep(1)


6 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-3-1856a1b248cf> in send_email()
     46 
     47             # 메일 전송
---> 48             smtp.send_message(message)
     49 
     50 # 스케쥴러 설정

/usr/lib/python3.10/smtplib.py in send_message(self, msg, from_addr, to_addrs, mail_options, rcpt_options)
    984             g.flatten(msg_copy, linesep='\r\n')
    985             flatmsg = bytesmsg.getvalue()
--> 986         return self.sendmail(from_addr, to_addrs, flatmsg, mail_options,
    987                              rcpt_options)
    988 

/usr/lib/python3.10/smtplib.py in sendmail(self, from_addr, to_addrs, msg, mail_options, rcpt_options)
    899             # the server refused all our recipients
    900             self._rset()
--> 901             raise SMTPRecipientsRefused(senderrs)
    902         (code, resp) = self.data(msg)
    903         if code != 250:

SMTPRecipientsRefused: {}
취소
 공유
취소
댓글 0
댓글 알림
나의얼굴