빅데이터 김교수의 "AI노마드연구소" AI로 열어가는 노마드 세상!

빅데이터 김교수의 "AI노마드연구소" AI로 열어가는 노마드 세상입니다. AI 코딩작성, SNS 분석, AI업무자동화 컨설팅 0507-1419-0222

자세히보기

시사뉴스

챗지피티, 바드로 5분만에 이메일 자동발송 프로그램 개발 가능?!

빅데이터 김교수 2023. 5. 13. 15:11

Python은 내장 라이브러리인 smtplib와 email.mime를 사용하여 이메일을 발송할 수 있습니다. 이를 이용한 간단한 이메일 발송 코드를 작성해보겠습니다.

 

 챗지피에서 다음과 같은 프로프로 명령합니다. 아래 주소는 네이버 기준으로 메일발송 자동화를 시도해 보도록 하겠습니다. 

 명령 프롬프트 : 

" https://nid.naver.com/nidlogin.login?url=https%3A%2F%2Fmail.naver.com%2F 에 로그인해서 자동메일 발송하는 파이썬 코드를 작성해줘"

 

 

위 프롬프트를 실행하면, 아래와 같은 결과를 보여줍니다(챗지피티)

Python은 내장 라이브러리인 smtplib와 email.mime를 사용하여 이메일을 발송할 수 있습니다. 이를 이용한 간단한 이메일 발송 코드를 작성해보겠습니다.

  1. 필요한 라이브러리를 불러옵니다:
pythonCopy code
import smtplib from email.mime.text import MIMEText from email.header import Header
  1. SMTP 서버를 설정하고, 발신자와 수신자, 그리고 메일의 제목과 본문을 정의합니다:
pythonCopy code
smtp_server = 'smtp.gmail.com' smtp_port = 587 # 대부분의 메일 시스템에서 이 포트를 사용합니다. from_email = 'your_email@gmail.com' to_email = 'recipient_email@gmail.com' password = 'your_password' # Gmail 계정의 비밀번호를 입력하세요. subject = 'Hello, this is a test email' body = 'This is the body of the test email'
  1. 메일의 제목과 본문을 MIME 형식으로 구성합니다:
pythonCopy code
msg = MIMEText(body, 'plain', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = from_email msg['To'] = to_email
  1. SMTP 서버에 로그인하고 메일을 전송합니다:
pythonCopy code
with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() # TLS 보안 설정을 시작합니다. server.login(from_email, password) # SMTP 서버에 로그인합니다. server.send_message(msg) # 메일을 전송합니다.

이 프로그램은 Gmail을 사용하여 메일을 보내는 예제입니다. 다른 메일 서비스를 사용하려면 smtp_server와 smtp_port를 해당 메일 서비스의 SMTP 서버와 포트로 변경해야 합니다. 또한, 이메일 애플리케이션에 따라 보안 설정이 다를 수 있으므로, 이메일 서비스의 문서를 참조하시는 것이 좋습니다.

또한, 이 예제에서는 비밀번호를 직접 코드에 작성했지만, 실제로는 이런 방식은 안전하지 않습니다. 비밀번호를 안전하게 관리하는 방법을 찾아보시는 것이 좋습니다. 예를 들어, 환경 변수를 사용하거나, 외부에 공개되지 않는 별도의 설정 파일에 비밀번호를 저장하는 방법을 고려해보세요.

 

바드의 경우는 다음과 같은 결과 코드를 파이썬으로 출력해줍니다. 

 

소스 코드는 다음과 같습니다. 

 

import smtplib

# 발신자의 이메일 주소와 비밀번호를 입력하세요.
from_email = "your_email@example.com"
from_password = "your_password"

# 수신자의 이메일 주소를 입력하세요.
to_email = "to_email@example.com"

# 이메일 제목을 입력하세요.
subject = "This is a test email."

# 이메일 본문을 입력하세요.
body = "This is the body of the email."

# 이메일을 보냅니다.
with smtplib.SMTP("smtp.gmail.com") as smtp:
    smtp.ehlo()
    smtp.starttls()
    smtp.login(from_email, from_password)
    smtp.sendmail(from_email, to_email, subject, body)
    print("이메일 발송 성공")

 

 

위 코드를 실행해보면 몇가지 에러가 발생합니다만, 여러분 에러 디버깅을 수행합니다. 

 

위 코드에서 메일 수신자리스트를 엑셀에서 첫번째 클럼에서 받고, 발송할 내용은 두번열 2열에서 받아 동일한 내용으로 전송하는 파일썬 코드로 수정해줘
Share Prompt 있습니다. 이 라이브러리를 사용하면 엑셀 파일에서 데이터를 쉽게 읽어올 수 있습니다. 먼저 pandas를 설치해야 합니다. 설치 방법은 pip install pandas와 pip install openpyxl를 터미널에서 실행하는 것입니다. d
 

아래와 같은 코드를 얻을 수 있습니다. 

import smtplib
from getpass import getpass
from email.mime.text import MIMEText
from email.header import Header
import pandas as pd

# 네이버 아이디와 비밀번호를 읽어옵니다.
with open("/content/drive/MyDrive/Python/크룰링/pw.txt", "r") as f:
    user_id, user_pw = map(str.strip, f.readlines())

# 엑셀 파일에서 이메일 수신자 리스트와 메일 내용을 불러옵니다.
df = pd.read_excel('email_list.xlsx')  # 'email_list.xlsx'는 실제 엑셀 파일 경로로 변경해주세요.
emails = df.iloc[:, 0].tolist()
bodies = df.iloc[:, 1].tolist()

# SMTP 서버에 연결합니다.
with smtplib.SMTP("smtp.naver.com", 587) as smtp:
    smtp.ehlo()
    smtp.starttls()

    # 네이버 로그인을 시도합니다.
    try:
        smtp.login(user_id, user_pw)
    except smtplib.SMTPAuthenticationError:
        print("이메일 인증 실패")
        exit(1)

    # 각 이메일 수신자에게 메일을 보냅니다.
    for to_email, body in zip(emails, bodies):
        subject = "This is a test email."

        # MIME 메시지를 생성합니다.
        msg = MIMEText(body.encode('utf-8'), _subtype='plain', _charset='utf-8')
        msg['Subject'] = Header(subject, 'utf-8')
        msg['From'] = user_id + '@naver.com'
        msg['To'] = to_email

        # 메일을 전송합니다.
        try:
            smtp.sendmail(user_id + '@naver.com', to_email, msg.as_string())
            print(f"이메일 발송 성공: {to_email}")
        except Exception as e:
            print(f"이메일 전송 중 에러 ({to_email}): {e}")
 
 
 자, 그럼 위 코드를 이용해서 챗지피티와 바드를 통해 csv파일에서 여러분을 전송하고자하는 메일주소, 이름, 내용을 작성한 후, 그 내용을 여러사람에서 자동발송할 수 있는 코드로 업그레이드 해보시기 바랍니다. 
 
 빅데이터 김교수.