欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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进入,设置授权码,可以与邮箱密码不同,用于第三方登录

SMTP邮件发送程序

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容器中测试:

SMTP邮件发送程序

然后进入邮箱查看,可以发现已经收到邮件。

邮件标题内容不要使用test等比较水的词,不然会被服务器自动屏蔽掉

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

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