• 采用python标准库smtplib

  • 语言版本:python3.8.3

  • 用户邮箱:163、QQ

  • SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

  • Python创建 SMTP 对象语法如下:import smtplib

  • smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] ),参数说明:

    • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数
    • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25
    • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可
  • Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]),参数说明:

    • from_addr: 邮件发送者地址
    • to_addrs: 字符串列表,邮件发送地址
    • msg: 发送消息这里要注意一下第三个参数,msg 是字符串,表示邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import smtplib
import email.mime.text as e_text

class SendMail:
    def __init__(self,sender,password):
        """
        初始化
        param:
            sender: 发件人邮箱
            password:发件人的授权码
        ret:
            None
        """
        self.SMTP_server = "smtp.163.com"
        self.sender = sender
        self.password = password # 开启服务器后的授权码,不是密码
        self.mail_server = smtplib.SMTP(self.SMTP_server, 25# 邮件服务器25端口
        self.mail_server.login(self.sender, self.password)
        
    def send(self, title, message, mail_list):
        """
        发送邮件
        param:
            title->str: 邮件标题
            message->str: 邮件正文
            mail_list->list: 接收人列表
        ret:
            None
        """
        msg = e_text.MIMEText(message) # 转化邮件文本
        msg["Subject"] = title
        msg["From"] = self.sender
        for receve in mail_list:
            msg["To"] = receve # 邮件接收方
            self.mail_server.sendmail(self.sender,receve,msg.as_string())
            
    def exit(self):
        """
发送完邮件后,手动关闭sender对象
"""
        self.mail_server.quit()
        print("--发送成功--")

if __name__ == "__main__"
    sender1 = SendMail("xxxxxs@163.com","xxxxxxxxxR")
    m_title = "紧急,收到立回"
    m_msg = "今天说请你吃饭的消息你收到了请回复啊"
    send_user_list = ["xxxx5@qq.com","xxxxxx67@qq.com"]
    sender1.send(m_title, m_msg, send_user_list)
    sender1.exit()