산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python - SMTP를 사용하여 이메일 보내기

이전 페이지다음 페이지

SMTP(Simple Mail Transfer Protocol)는 메일 서버 간의 전자 메일 전송 및 라우팅을 처리하는 프로토콜입니다.

Python은 smtplib를 제공합니다. SMTP 또는 ESMTP 수신기 데몬이 있는 모든 인터넷 시스템에 메일을 보내는 데 사용할 수 있는 SMTP 클라이언트 세션 개체를 정의하는 모듈입니다.

다음은 나중에 전자 메일을 보내는 데 사용할 수 있는 하나의 SMTP 개체를 만드는 간단한 구문입니다.

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

다음은 매개변수의 세부사항입니다 -

SMTP 개체에는 sendmail이라는 인스턴스 메서드가 있습니다. , 일반적으로 메시지를 메일로 보내는 작업을 수행하는 데 사용됩니다. 세 개의 매개변수가 필요합니다 -

다음은 Python 스크립트를 사용하여 하나의 이메일을 보내는 간단한 방법입니다. 한 번 해보세요 -

#!/usr/bin/python

import smtplib

sender = '[email protected]'
receivers = ['[email protected]']

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

여기에서 헤더 형식을 올바르게 지정하도록 주의하면서 삼중 따옴표를 사용하여 메시지에 기본 전자 메일을 배치했습니다. 이메일에는 보낸사람이 필요합니다. , 받는 사람 , 및 제목 헤더, 빈 줄로 이메일 본문과 구분됨.

메일을 보내려면 smtpObj를 사용하세요. 로컬 컴퓨터의 SMTP 서버에 연결한 다음 sendmail 메시지, 보낸 사람 주소 및 대상 주소와 함께 매개 변수로 메서드를 사용합니다. 보낸 사람 및 받는 사람 주소가 전자 메일 자체에 있지만 메일을 라우팅하는 데 항상 사용되는 것은 아닙니다.

로컬 컴퓨터에서 SMTP 서버를 실행하지 않는 경우 smtplib를 사용할 수 있습니다. 클라이언트는 원격 SMTP 서버와 통신합니다. 웹메일 서비스(예:Hotmail 또는 Yahoo! Mail)를 사용하지 않는 한 전자 메일 공급자는 다음과 같이 제공할 수 있는 보내는 메일 서버 세부 정보를 제공해야 합니다. −

smtplib.SMTP('mail.your-domain.com', 25)

Python을 사용하여 HTML 이메일 보내기

Python을 사용하여 문자 메시지를 보내면 모든 내용이 단순 텍스트로 처리됩니다. 문자 메시지에 HTML 태그를 포함해도 간단한 텍스트로 표시되며 HTML 구문에 따라 HTML 태그의 서식이 지정되지 않습니다. 그러나 Python은 HTML 메시지를 실제 HTML 메시지로 보낼 수 있는 옵션을 제공합니다.

이메일 메시지를 보내는 동안 HTML 이메일을 보낼 Mime 버전, 콘텐츠 유형 및 문자 집합을 지정할 수 있습니다.

다음은 HTML 콘텐츠를 이메일로 보내는 예제입니다. 한 번 해보세요 -

#!/usr/bin/python

import smtplib

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format

<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

첨부 파일을 이메일로 보내기

혼합 콘텐츠가 포함된 이메일을 보내려면 콘텐츠 유형을 설정해야 합니다. multipart/mixed 헤더 . 그런 다음 경계 내에서 텍스트 및 첨부 파일 섹션을 지정할 수 있습니다. .

경계는 전자 메일의 메시지 부분에 나타날 수 없는 고유 번호가 뒤에 오는 두 개의 하이픈으로 시작됩니다. 이메일의 마지막 섹션을 나타내는 마지막 경계도 두 개의 하이픈으로 끝나야 합니다.

첨부 파일은 pack("m")으로 인코딩해야 합니다. 전송하기 전에 base64로 인코딩하는 기능입니다.

다음은 /tmp/test.txt 파일을 보내는 예입니다. 첨부 파일로. 한 번 해보세요 -

#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

sender = '[email protected]'
reciever = '[email protected]'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, reciever, message)
   print "Successfully sent email"
except Exception:
   print "Error: unable to send email"

python

  1. 파이썬 데이터 유형
  2. 파이썬 연산자
  3. 파이썬 통과 문
  4. 파이썬 함수 인수
  5. 파이썬 사전
  6. try, except 및 finally 문을 사용하는 Python 예외 처리
  7. Raspberry pi를 사용하는 TMP006 온도 센서 Python 라이브러리,
  8. Python 및 Raspberry Pi 온도 센서
  9. Python Average:Python에서 목록의 AVERAGE를 찾는 방법
  10. 세 번째 변수를 사용하지 않고 두 개의 Python 변수 바꾸기