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等比较水的词,不然会被服务器自动屏蔽掉

邮件发送还可加入其它功能具体参考菜鸟教程

注:以上所有操作均在作者在网上搜集资料后,在个人电脑上实验成功,若读者实验时失败,可能由一些未知因素导致,可与作者联系。编写的教程可能由于疏忽出错,请与作者联系。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐