二种python发送邮件实例讲解(python发邮件附件可以使用email模块
可以使用Python的email模块来实现带有附件的邮件的发送。 SMTP (Simple Mail Transfer Protocol) SMTP协议的一个重要特点是它能够接力传送邮件。它工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。 POP3 (Post Office Protocol) & IMAP (Internet Message Access Protocol) POP3协议为用户提供了一种简单、标准的方式来访问邮箱和获取电邮。使用POP3协议的电邮客户端通常的工作过程是:连接服务器、获取所有信息并保存在用户主机、从服务器删除这些消息然后断开连接。POP3协议的默认TCP端口号是110。 IMAP协议也提供了方便的邮件下载服务,让用户能进行离线阅读。使用IMAP协议的电邮客户端通常把信息保留在服务器上直到用户显式删除。这种特性使得多个客户端可以同时管理一个邮箱。IMAP协议提供了摘要浏览功能,可以让用户在阅读完所有的邮件到达时间、主题、发件人、大小等信息后再决定是否下载。IMAP协议的默认TCP端口号是143。 邮件格式 (RFC 2822) 邮件头每个字段 (Field) 包括两部分:字段名和字段值,两者使用冒号分隔。有两个字段需要注意:From和Sender字段。From字段指明的是邮件的作者,Sender字段指明的是邮件的发送者。如果From字段包含多于一个的作者,必须指定Sender字段;如果From字段只有一个作者并且作者和发送者相同,那么不应该再使用Sender字段,否则From字段和Sender字段应该同时使用。 邮件体包含邮件的内容,它的类型由邮件头的Content-Type字段指明。RFC 2822定义的邮件格式中,邮件体只是单纯的ASCII编码的字符序列。 MIME (Multipurpose Internet Mail Extensions) (RFC 1341) Python email模块 1. class email.message.Message __getitem__,__setitem__实现obj[key]形式的访问。 3. class email.mime.multipart.MIMEMultipart() 在3.0版本的email模块 (Python 2.3-Python 2.5) 中,这个类位于email.MIMEMultipart.MIMEMultipart。 4. class email.mime.text.MIMEText(_text) 使用字符串_text来生成MIME对象的主体文本。 代码实现 复制代码 代码如下: !/usr/bin/env python # -*- coding: UTF-8 -*- from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText # python 2.3.*: email.Utils email.Encoders from email.utils import COMMASPACE,formatdate from email import encoders import os #server['name'],server['user'],server['passwd'] def send_mail(server,fro,to,subject,text,files=[]): assert type(server) == dict assert type(to) == list assert type(files) == list msg = MIMEMultipart() msg['From'] = fro msg['Subject'] = subject msg['To'] = COMMASPACE.join(to) #COMMASPACE==',' msg['Date'] = formatdate(localtime=True) msg.attach(MIMEText(text)) for file in files: part = MIMEBase('application','octet-stream') #'octet-stream': binary data part.set_payload(open(file,'rb'.read())) encoders.encode_base64(part) part.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(file)) msg.attach(part) import smtplib smtp = smtplib.SMTP(server['name']) smtp.login(server['user'],server['passwd']) smtp.sendmail(fro,msg.as_string()) smtp.close() 利用python的smtplib库实现邮件发送 复制代码 代码如下: import smtplib def sendmail(): try: smtp=smtplib.SMTP(HOST) smtp.login(USER,PASSWORD) #登录邮箱 smtp.sendmail(USER+"@"+PROFIX,TO,MSG) #发送邮件 smtp.quit() print 'email send success' except Exception,e: print e print 'email send failed.' 邮件可以发送了 然后学习了一点定义msg (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |