python实现SMTP邮件发送功能
一直想着给框架添加邮件发送功能、所以整理下python下邮件发送功能
首先python是支持邮件的发送、内置smtp库、支持发送纯文本、HTML及添加附件的邮件。之后是邮箱、像163、qq、新浪等邮箱默认关闭SMTP服务,需要我们手动打开,打开后通过发件人邮箱、授权密码 通过发件人的SMTP服务发送
代码如下:
#!/usr/bin/env python # -*- coding: utf_8 -*- from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEBase from email import encoders from email.header import Header from email.utils import parseaddr, formataddr import smtplib class SendEmail: outbox = "pythondldysl01@163.com" # 发件箱地址 password = "wxqcl258258" # 授权密码 不是邮箱登录密码 inbox = "xxx@qq.com" # 收件箱地址 smtp_server = "smtp.163.com" # 发件箱服务器地址 def __init__(self): pass @classmethod def _format_address(cls, text): name, address = parseaddr(text) return formataddr((Header(name, "utf-8").encode(), address)) @classmethod def send_email_text(cls): msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8") # 第一个参数:邮件正文 # 第二个参数:邮件类型 纯文本 # 第三个参数:编码 msg["From"] = SendEmail._format_address("来自163的一封邮件 <%s>" % SendEmail.outbox) # 发件人姓名与发件箱地址 msg["To"] = SendEmail._format_address("管理员 <%s>" % SendEmail.inbox) # 收件人姓名与收件箱地址 msg["Subject"] = Header("来自SMTP的问候", "utf-8").encode() # 邮件标题 try: server = smtplib.SMTP(SendEmail.smtp_server, 25) # 构造smtp服务器连接 # server.set_debuglevel(1) # debug输出模式 默认关闭 server.login(SendEmail.outbox, SendEmail.password) # 登录smtp服务器 server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string()) # 发送邮件 server.quit() print "邮件发送成功" except Exception, e: print str(e) print "邮件发送失败" if __name__ == '__main__': SendEmail.send_email_text()
这只是纯文本的内容、可以支持HTML格式的内容、修改内容如下:
msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8")
内容修改成HTML格式、 “plain”改成 “html”
最后是添加附件的邮件
代码如下:
@classmethod def send_email_multipart(cls): msg = MIMEMultipart() msg["From"] = SendEmail._format_address("来自163的一封邮件 <%s>" % SendEmail.outbox) # 发件人姓名与发件箱地址 msg["To"] = SendEmail._format_address("管理员 <%s>" % SendEmail.inbox) # 收件人姓名与收件箱地址 msg["Subject"] = Header("来自SMTP的问候", "utf-8").encode() # 邮件标题 msg.attach(MIMEText("测试添加附件的smtp邮件发送功能", "plain", "utf-8")) with open("E:\\work\\python project\\CreateProject\\20160421140953.xml", "rb") as f: # 设置附件的MIME和文件名 mime = MIMEBase("xml", "xml", filename="测试报告.xml") # 加上必要的头信息 mime.add_header('Content-Disposition', 'attachment', filename="测试报告.xml") mime.add_header('Content-ID', '<0>') mime.add_header('X-Attachment-Id', '0') # 把附件的内容读进来: mime.set_payload(f.read()) # 用Base64编码: encoders.encode_base64(mime) # 添加到MIMEMultipart: msg.attach(mime) try: server = smtplib.SMTP(SendEmail.smtp_server, 25) # 构造smtp服务器连接 # server.set_debuglevel(1) # debug输出模式 默认关闭 server.login(SendEmail.outbox, SendEmail.password) # 登录smtp服务器 server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string()) # 发送邮件 server.quit() print "邮件发送成功" except Exception, e: print str(e) print "邮件发送失败"
以上就是python邮件发送功能的具体实现代码,希望对大家的学习有所帮助。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

파이썬 프로그래밍에서 Python 매개 변수 주석의 대체 사용법, 매개 변수 주석은 개발자가 기능을 더 잘 이해하고 사용하는 데 도움이되는 매우 유용한 기능입니다 ...

Python 스크립트는 특정 위치에서 Cursor 위치로 출력을 어떻게 제거합니까? Python 스크립트를 작성할 때 이전 출력을 커서 위치로 지우는 것이 일반적입니다 ...

내 코드가 API에 의해 데이터를 반환 할 수없는 이유는 무엇입니까? 프로그래밍에서 우리는 종종 API가 호출 될 때 NULL 값을 반환하는 문제를 겪는 경우가 종종 있습니다.

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

Go 또는 Rust를 사용하여 Python 스크립트를 호출하여 실제 병렬 실행을 달성하는 방법은 무엇입니까? 최근에 나는 파이썬을 사용하고 있습니다 ...

Python Binary Library (.WHL) 다운로드 방법은 Windows 시스템에 특정 라이브러리를 설치할 때 많은 Python 개발자가 겪는 어려움을 탐구합니다. 일반적인 해결책 ...
