这里给大家分享一段自己写的python代码。实现利用smtp发送邮件,。
import argparse
import osimport getpass
import re
import sys
import smtplib
from email.mime.image import MIMEImage #import 子类或者内部类,使用from可以在后文引用时省略父类
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
SMTP_SERVER = 'smtp.qiye.163.com'
SMTP_PORT = 25
def send_email(sender,recipient):
msg = MIMEMultipart()#邮件内容格式从单一改成了多种,这个时候初始化Message变量就不能再用MIMEText了,
#而是使用MIMEMultipart()。之后如果要添加不同的信息的话,就使用attach方法
msg['subject'] = 'python email test'
msg['to'] = recipient
msg['from'] = sender
subject = 'python email test'
message = 'images attached'
#attach image files
files = os.listdir(os.getcwd())
gifsearch = re.compile(".gif",re.IGNORECASE)
files = filter(gifsearch.search,files)
for filename in files:
path = os.path.join(os.getcwd(),filename)
if not os.path.isfile(path):
continue
img = MIMEImage(open(path,'rb').read(),_subtype="gif")#限定了邮件对象类别为gif
img.add_header('content-disposition','attachment',filename=filename)
msg.attach(img)#添加信息,就使用attach方法
part = MIMEText('text',"plain")#限定了邮件对象类别为text
part.set_payload(message)
msg.attach(part)#同上--像邮件中添加对象。
#create smtp session
session = smtplib.SMTP(SMTP_SERVER,SMTP_PORT)#实例一个smtp对象
session.ehlo()#用户认证
session.starttls()#STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。
session.ehlo()
password = getpass.getpass(prompt='enter your google password')
session.login(sender,password)
session.sendmail(sender,recipient,msg.as_string())
print("email sent")
session.quit()
if __name__=='__main__':
parser = argparse.ArgumentParser(description='email sending example')
parser.add_argument('--sender',action="store",dest="sender")
parser.add_argument('--recipient',action="store",dest="recipient")
given_args = parser.parse_args()
send_email(given_args.sender,given_args.recipient)
#SMTP服务需要验证. 您的发信服务器需要密码验证才能进行邮件发送.这个授权码替代上面代码部分的passwd即可.授权码在邮箱的设置里获取
#
#思路:构造一个方法,方法里一般需要实现的功能有:实例化邮件对象,
# 并向其中添加邮件体(各个类下不同格式的邮件体),然后实例化一个smtp对象,用于链接服务器,然后调用send函数发送构建好的邮件信息