SMTP邮件发送程序
程序员文章站
2022-07-08 12:06:44
...
SMTP邮件发送程序
语言:python
1.简介
SMTP协议称为简单邮件传输协议。通常工作在两种情况下:一是邮件从客户机传输到服务器,二是从某一个服务器传输带另一个服务器。SMTP是一个请求/响应协议,采用TCP/IP协议栈,他监听25号端口,用于接收mail请求并与远端mail服务器建立SMTP连接。
2.SMTP连接和发送过程
(1) 建立TCP连接,telent命令
(2) 客户端发送HELO命令标识发件人身份,然后客户端发送Mail命令;服务端正希望以OK做响应,表明准备接收。
(3) 客户端发送RCPT命令,标识计划接收人,服务端则表明是否愿意为发件人接收邮件。
(4) 协商结束,发送邮件,用DATA发送
(5) 以’.’结束
(6) 结束发送,QUIT退出。
3.环境调试
首先你自己需要有一个SMTP服务器,那么一般的邮箱可以开通SMTP协议来使用。比如163.com邮箱开启方式如下:
(1)点击设置,进入常规设置
(2)点击POP3/SMTP/IMAP进入,设置授权码,可以与邮箱密码不同,用于第三方登录
4. 编写程序
Python把这个过程已经封装好了,只需调用几个函数便可执行,需要smtplib
代码如下:
import smtplib
from email.header import Header
from email.mime.text import MIMEText
sender=""
receivers=[]
content=''
title=''
def sendEmail():
mail_host=input("please input your smtp server address:\n");
mail_user=input("please input user name:\n");
mail_pass=input("please input your license code:\n");
print('\n')
re=input('please input receives email address(separated by commas,end of a newline):\n')
title=input('please input title:\n')
content=input('please input your message:\n')
sender=mail_user
receivers=re.split(',');
message=MIMEText(content,'plain','utf-8')
message['From']="{}".format(sender)
message['To']=",".join(receivers)
message['Subject']=title
try:
smtpObj=smtplib.SMTP(mail_host,25)
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender,receivers,message.as_string())
smtpObj.quit()
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
if __name__=='__main__':
sendEmail()
5.在docker容器中测试:
然后进入邮箱查看,可以发现已经收到邮件。
邮件标题内容不要使用test等比较水的词,不然会被服务器自动屏蔽掉
邮件发送还可加入其它功能具体参考菜鸟教程
注:以上所有操作均在作者在网上搜集资料后,在个人电脑上实验成功,若读者实验时失败,可能由一些未知因素导致,可与作者联系。编写的教程可能由于疏忽出错,请与作者联系。
上一篇: js 缩放图片
下一篇: image 不提交表单