>백엔드 개발 >파이썬 튜토리얼 >파이썬은 어떻게 보내나요? Python으로 이메일을 보내는 세 가지 방법 소개

파이썬은 어떻게 보내나요? Python으로 이메일을 보내는 세 가지 방법 소개

不言
不言앞으로
2018-10-18 17:19:143392검색

이 글의 내용은 PHP가 SwooleTaskWorker를 사용하여 Mysql의 비동기 작업(코드)을 구현하는 방법에 대한 내용입니다. 필요한 참고 자료가 있으면 도움이 될 것입니다.

Python에서 이메일을 보내는 방법에는 메일 서버에 로그인하는 방법, smtp 서비스를 사용하는 방법, sendmail 명령을 호출하는 방법이 있습니다.

Python에서 이메일을 보내는 방법은 메일에 로그인하여 보내는 방법이 비교적 간단합니다. 서비스는 Linux에서도 사용할 수 있습니다. sendmail 명령을 호출하여 이메일을 보낼 수도 있고 로컬 또는 원격 SMTP 서비스를 사용하여 이메일을 보낼 수도 있습니다. 이 Mipu 블로그에서는 먼저 이메일을 보내고 기록하는 몇 가지 간단한 방법을 소개합니다. HTML 이메일, 첨부 파일 등도 지원됩니다. 필요할 때 문서를 확인하세요.

1. 메일 서버에 로그인합니다.

smtp를 통해 타사 smtp 사서함에 로그인하여 포트 25 및 465를 지원하는 이메일을 보냅니다.

vim python_email_1.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# author: mimvp.com
# 2015.10.05
import smtplib  
from email.mime.text import MIMEText  
smtpHost = 'smtp.exmail.qq.com' 
sender = 'robot@mimvp.com' 
password = "mimvp-password" 
receiver = 'yanggang@mimvp.com'
content = 'hello mimvp.com' 
msg = MIMEText(content)  
msg['Subject'] = 'email-subject' 
msg['From'] = sender  
msg['To'] = receiver  
## smtp port 25
smtpServer = smtplib.SMTP(smtpHost, 25)         # SMTP
smtpServer.login(sender, password)  
smtpServer.sendmail(sender, receiver, msg.as_string())  
smtpServer.quit()  
print 'send success by port 25' 
 
## smtp ssl port 465
smtpServer = smtplib.SMTP_SSL(smtpHost, 465)    # SMTP_SSL
smtpServer.login(sender, password)  
smtpServer.sendmail(sender, receiver, msg.as_string())  
smtpServer.quit()  
print 'send success by port 465'

다음 명령을 실행합니다:

$ python python_email_1.py 
send success by port 25
send success by port 465

결과를 보내면 두 개의 이메일을 받게 됩니다. 아래와 같이 이메일 중 하나를 스크린샷하세요.

파이썬은 어떻게 보내나요? Python으로 이메일을 보내는 세 가지 방법 소개

2. smtp 서비스를 사용하세요.

테스트가 실패했습니다. 건너뛰거나 메시지를 남겨서 수정하세요.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# author: mimvp.com
# 2015.10.05
 
 
import smtplib  
from email.mime.text import MIMEText  
import subprocess
   
smtpHost = 'smtp.exmail.qq.com' 
sender = 'robot@mimvp.com' 
password = "mimvp-password" 
receiver = 'yanggang@mimvp.com'
   
content = 'hello mimvp.com' 
msg = MIMEText(content)   
   
   
 
if __name__ == "__main__":   
    p = subprocess.Popen(['/usr/sbin/sendmail', '-t'], stdout=subprocess.PIPE)  
    print(str(p.communicate()))
    p_res = str(p.communicate()[0])
    msg = MIMEText(p_res)
 
    msg["From"] = sender  
    msg["To"] = receiver  
    msg["Subject"] = "hello mimvp.com" 
    s = smtplib.SMTP(smtpHost)  
    s.login(sender, password)
    s.sendmail(sender, receiver, msg.as_string())  
    s.quit()  
    print 'send success'

3. sendmail 명령 호출

기본 Linux 자체 호출 sendmail 서비스는 sendmail 백그라운드 프로세스를 시작하지 않고 보낸 사람에게 로그인을 요구하지 않고 이메일을 보냅니다. 이메일 보낸 사람은 제한 없이 어떤 이름이든 될 수 있습니다.

특별 참고 사항: sendmail 명령은 기본적으로 포트 25를 사용하여 이메일을 보냅니다. Alibaba Cloud, Tencent Cloud 등은 포트 25를 차단했기 때문에 이 예제는 포트 25가 활성화된 시스템에서 테스트해야 합니다.

vim python_email_3.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# author: mimvp.com
# 2015.10.05
  
  
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
import commands
  
import sys 
reload(sys)
sys.setdefaultencoding('utf-8')
  
def send_mail(sender, recevier, subject, html_content):
        msg = MIMEText(html_content, 'html', 'utf-8')
        msg["From"] = sender
        msg["To"] = recevier
        msg["Subject"] = subject
        p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
        p.communicate(msg.as_string())
  
  
sender = 'robot@mimvp.com'
recevier = 'yanggang@mimvp.com'
subject = 'sendmail-subject'
html_content = 'hello mimvp.com'
send_mail(sender, recevier, subject, html_content)

실행 명령:

python python_email_3.py

수신 결과:

파이썬은 어떻게 보내나요? Python으로 이메일을 보내는 세 가지 방법 소개

위 내용은 파이썬은 어떻게 보내나요? Python으로 이메일을 보내는 세 가지 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

관련 기사

더보기