zoukankan      html  css  js  c++  java
  • SMTP发送邮件

    简介

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

    import smtplib
    
    smtp = smtplib.SMTP()
    smtp.connect(smtpserver, port)
    

    参数说明:

    • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:网易163邮箱'smtp.163.com',这个是可选参数。
    • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。

    Python SMTP对象使用sendmail方法发送邮件,语法如下:

        smtp.sendmail(sender, receiver, msg.as_string())
    

    参数说明:

    • sender 邮件发送人
    • receiver 邮件接收人
    • msg 邮件信息

    实例一

    python中的类库中,python自带email模块。
    email模块中,我们也可以email类库实现对邮件的读取,和邮件的发送等功能

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    
    sender = '邮件发送邮箱'
    receiver = '邮件接收邮箱'
    # receiver = ['xxx@163.com', 'xxx@qq.com']  ## 多个邮件接收人
    subject = '邮件主题' 
    smtpserver = 'smtp.163.com'  # 服务器地址
    username = '邮箱用户'  # 邮箱用户
    password = 'xxx'  # 这里是邮箱授权码不是密码
    message = '邮件内容'
    
    msg = MIMEText(message, 'plain', 'utf-8')  # 邮件内容
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = ‘邮件发送人’
    msg['To'] = 'xxx@qq.com'  # 邮件接收人
    # msg['To'] = 'xxx@163.com, xxx@qq.com'
    
    try:
        smtp = smtplib.SMTP()
        smtp.connect(smtpserver, port=25)
        smtp.login(username, password)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
        print('success')
    except Exception as e:
        print(e)
    

    如何获取授权码?进入邮箱主页,然后进入设置主页,左下角客户端授权,即可开启授权功能,并获取授权码

    实例二

    发送带有链接的邮件

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    
    sender = '邮件发送邮箱'
    receiver = '邮件接收邮箱'
    # receiver = ['xxx@163.com', 'xxx@qq.com']  ## 多个邮件接收人
    subject = '邮件主题' 
    smtpserver = 'smtp.163.com'  # 服务器地址
    username = '邮箱用户'  # 邮箱用户
    password = 'xxx'  # 这里是邮箱授权码不是密码
    message = """
    <p>Python 邮件发送测试...</p>
    <p><a href="http://www.baidu.com">这是一个baidu链接</a></p>
    """
    
    msg = MIMEText(message, 'plain', 'utf-8')  # 邮件内容
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = ‘邮件发送人’
    msg['To'] = 'xxx@qq.com'  # 邮件接收人
    # msg['To'] = 'xxx@163.com, xxx@qq.com'
    
    try:
        smtp = smtplib.SMTP()
        smtp.connect(smtpserver, port=25)
        smtp.login(username, password)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
        print('success')
    except Exception as e:
        print(e)
    

    注意:这里如果你短时间内重复发送邮件,或者邮件内带有敏感信息如链接或者关键词,邮件可能不会发送

    更多

  • 相关阅读:
    Win32中安全的子类化(翻译)
    OJ题目JAVA与C运行效率对比
    关协同过滤
    Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
    GDI+简单现实文字旋转
    opencv 2.46与visual studio 2012 配置方法
    Emacs助力PowerShell
    ARC forbids explicit message send of 'autorelease'错误
    Event处理
    复制中发布服务器和订阅服务器内容不一致的解决办法
  • 原文地址:https://www.cnblogs.com/welan/p/9473407.html
Copyright © 2011-2022 走看看