Python实现邮件发送


一、邮件发送的基本过程与概念

  1、邮件服务器 :类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中

  2、电子邮箱 :用户在邮件服务器上申请的一个账户

    from:xxx@xx.com  ----发件人

    To:xxx@xx.com    ----收件人

    subject:hello     ----主题

    body: 欢迎来到小滴课堂 -----内容体

二、邮件传输协议

  1、SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则

  2、POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信 规则

  3、IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则

三、代码实现

import smtplib
from email.mime.text import MIMEText


class SendEmail:
    def __init__(self, mail_host):
        self.mail_host = mail_host

    def send(self, title, content, sender, pwd, receivers):
        message = MIMEText(content, "html", "utf-8")
        message["From"] = "{}".format(sender)
        message["To"] = ",".join(receivers)
        message["Subject"] = title
        try:
            smtpObj = smtplib.SMTP_SSL(self.mail_host, 465) # 启用ssl发信,端口一般是465
            smtpObj.login(sender, pwd) # 登录
            smtpObj.sendmail(sender, receivers, message.as_string())
            print("发送成功")
        except Exception as e:
            print(e)


if __name__ == '__main__':
    mail = SendEmail("smtp.163.com")
    sender = "XXX@163.com"
    auth_code = "123456"
    receivers = ["111111@qq.com", "XXX@163.com"]
    title = "测试邮件发送"
    content = """
    测试邮件发送
    查看更多新闻
    """
    mail.send(title, content, sender, pwd, receivers)