SMTP(Simple Mail Transfer Protocol)
即简单邮件传输协议,是一个相对简单的基于文本的协议, 在其之上指定了一条消息的一个或多个接收者(在大多数状况下被确认是存在的),而后消息文本会被传输。能够很简单地经过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,须要使用MX (Mail eXchange) DNS;smtplib.SMTP(host="",port=0,local_hostname=None,[timeout,]source_address=None)
:SMTP类定义做为SMTP的构造函数定义了一个SMTP客户端会话对象,功能是与smtp服务器创建链接,在链接成功后就能够向服务器发送相关请求,好比登录、校验、发送、退出等。参数host是远程smtp主机地址、port是连接端口,默认2五、local_hostname是将本地主机的FQDN(完整域名)发送 HELO/EHLO(标识用户身份)的指令、timeout为连接或尝试连接多少秒后超时、source_address是绑定到具备多个网络接口的计算机中的某个特定源地址上或特定的TCP端口,它须要一个元组(主机,端口);在使用SMTP协议发送邮件以前须要先查看发件人的邮箱是否开启SMTP协议,如qq邮箱的开启协议的方式是:找到邮箱的设置-->在设置页面中选择帐户设置-->选择开启服务中的SMTP服务开启,点击开启后会弹出一个验证保密窗口,验证成功后就会自动生成受权码,这个受权码在发送邮件时会用到;html
smtplib
模块和email.mime.text
模块中的MIMEText
;smtp.163.com
,若是是qq邮箱服务器地址是smtp.qq.com
。 访问邮箱的服务器以后须要使用login('邮箱地址','邮箱受权码')
方法根据本身的帐号登陆服务器(这里的受权码就是以前开启SMTP协议生成的受权码),若是不登陆是不能发邮件的;send_message()
方法将发送邮件的消息传递给SMTP对象,开始发送邮件;import smtplib from email.mime.text import MIMEText from const_file import passwd def send_email(from_addr, to_addr, subject, password): msg = MIMEText("邮件正文",'html','utf-8') msg['From'] = from_addr msg['To'] = to_addr msg['Subject'] = subject smtp_server = smtplib.SMTP('smtp.qq.com') smtp_server.login(from_addr, password) smtp_server.send_message(msg=msg) if __name__ == "__main__": # passwd填写认证密码,不是登陆密码 send_email("邮箱地址", "邮箱地址", "这是一封测试邮件", passwd)
import smtplib from email.mime.text import MIMEText from const_file import passwd def send_email(from_addr, to_addr, subject, password): msg = MIMEText("邮件正文",'html','utf-8') msg['From'] = from_addr msg['To'] = to_addr msg['Subject'] = subject smtp_server = smtplib.SMTP('smtp.qq.com') smtp_server.login(from_addr, password) smtp_server.send_message(msg=msg) if __name__ == "__main__": send_list = ['a@163.com', 'b@163.com', 'c@163.com'] for to_addr in send_list: send_email("邮箱地址", to_addr, "这是一封测试邮件", passwd)
参考:https://www.9xkd.com/user/plan-view.html?id=3823903948服务器