smtp python邮件自动发送

smtplib和email,这俩模块是python自带的

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

代码实现 QQ邮箱发送

# -*- coding: utf-8 -*-
# @Time    : 2019/3/17 21:03
# @Author  : cd

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 导入html内容和第三方登录授权码 不是登录密码
from AutoSendEmail.h_test import HT
from AutoSendEmail.config import pwdqq

def send_email():
    sender = '[email protected]'
    receivers = ['[email protected]', '[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

    # 第三方 SMTP 服务
    mail_host = "smtp.qq.com"  # 设置服务器
    mail_user = "[email protected]"  # 用户名
    # smtp 授权口令
    mail_pass = pwdqq  # 口令


    message = MIMEText(HT, 'html')
    message['From'] = sender
    message['To'] = '[email protected]'

    subject = 'Python SMTP 邮件测试'
    message['Subject'] = '自动脚本发送...'

    try:
        smtpObj = smtplib.SMTP_SSL(host=mail_host, port=465)
        smtpObj.connect(mail_host, 465)  # 25 为 SMTP 端口号
        # smtpObj.starttls()
        # smtpObj.debuglevel(1)
        smtpObj.login(mail_user, mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        smtpObj.quit()
        print("邮件发送成功")
    except Exception as e:
        print(e)
        print("Error: 无法发送邮件")

if __name__ == '__main__':
    send_email()

QQ邮箱设置SMTP服务器,生成授权口令

smtp python邮件自动发送

发送成功实例

smtp python邮件自动发送

代码实现 163邮箱自动发送

# -*- coding: utf-8 -*-
# @Time    : 2019/3/19 20:34
# @Author  : cd

import smtplib
# 引入smtplib和MIMEText
from email.mime.text import MIMEText
from AutoSendEmail.config import pwd163

def sentemail():
    host = 'smtp.163.com'
    # 设置发件服务器地址
    port = 465
    # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式,现在一般是SSL方式
    sender = '[email protected]'
    # 设置发件邮箱,一定要自己注册的邮箱
    pwd = pwd163
    # 设置发件邮箱的授权码密码,根据163邮箱提示,登录第三方邮件客户端需要授权码
    # 可以多人发送 
    # receiver = '[email protected],[email protected]'
    # 设置邮件接收人,可以是QQ邮箱
    receiver = '[email protected]'    
    # 设置邮件正文,这里是支持HTML的
    body = '<h1>python script test</h1><p>cd</p>'    
    # 设置正文为符合邮件格式的HTML内容
    msg = MIMEText(body, 'html')    
    # 设置邮件标题
    msg['subject'] = 'python test'    
    # 设置发送人
    msg['from'] = sender    
    # 设置接收人
    msg['to'] = receiver    
    # 设置抄送人
    msg['Cc'] = '[email protected]'
    try:
    	# 注意!如果是使用SSL端口,这里就要改为SMTP_SSL
        smtp = smtplib.SMTP_SSL(host, port)        
        # HELO向服务器标志用户身份
        smtp.helo(host)
        # 服务器返回结果确认
        smtp.ehlo(host)
        # 登陆邮箱
        smtp.login(sender, pwd)        
        # 发送邮件!
        smtp.sendmail(sender, receiver, msg.as_string())   
        # 多人发送
        # smtp.sendmail(sender, receiver,split(','), msg.as_string())      
        print('Done.send email success')
    except smtplib.SMTPException:
        print('Error.send email fail')

if __name__ == '__main__':
    sentemail()

发送成功

smtp python邮件自动发送