美文网首页
Python SMTP发送邮件

Python SMTP发送邮件

作者: Silence_王凯 | 来源:发表于2018-03-28 11:13 被阅读0次

    首先你要用两个邮箱, 一个测试发送邮件, 一个用来接收测试.

    这里我用的是 网易 邮箱 发送和 QQ 邮箱接收测试.

    1.用来发送邮件的邮箱必须确认打开 SMTP 服务.

    2. 点击 POP3/SMTP/IMAP

    默认是关闭的, 确认打开服务, 会让你设置一个授权码,记住这个后面会用到.

    3. SMTP 是发送邮件的协议, Python 对 SMTP 支持有 smtplib 和 email 两个模块, email 负责构造邮件, smtplib 负责发送邮件.

    首先, 我们构造一个最简单的纯文本邮件:

    from  email.mime.text  import  MIMEText

    msg = MIMEText('hello,  send by Python...',  'plain',  'utf-8')

    构造 MIMEText 对象时, 第一个参数就是邮件正文, 第二个参数是 MIME 的 subtype(类型), 传入 'plain' 表示纯文本, 最后一定要用 'utf-8' 编码保证多语言兼容性.

    from email.mime.text import MIMEText

    import smtplib

    msg = MIMEText('Hello, send by Python ...?', 'plain', 'utf-8')

    msg['from'] = '13639330534@163.com'

    msg['to'] = '399704129@qq.com'

    from_addr = input('From: ')

    # 这里密码填写的是前面设置的授权码, 不是你邮箱密码.

    password = input('Password: ')

    # 接收邮箱的地址

    to_addr = input('To: ')

    # smtp 服务器地址

    #smtp_server = input('SMTP server: ')

    smtp_server = 'smtp.163.com'

    server = smtplib.SMTP(smtp_server, 25)

    server.set_debuglevel(1)

    server.login(from_addr, password)

    server.sendmail(from_addr, [to_addr], msg.as_string())

    server.quit()

    我们用 set_debuglevel(1) 就可以打印出和 SMTP 服务器交互的所有信息. login() 方法用来登录 SMTP 服务器, sendmail() 方法就是发邮件, 由于可以一次发给多个人, 所以传入一个 list, 邮件正文是一个 str, as_string() 把 MIMEText 对象变成 str.

    msg['from'] 与 msg['to'] 是必须加的否则会被网页服务器标记成垃圾邮件导致发送失败. 注意: msg['to'] 的邮件地址, 必须与 to_addr(要接收邮件的邮箱)地址保持一致, 否则报错.

    __________________________________________

    具体的其他操作, 请参考:: 

    > https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226355aadb8d4b2f3f42f6b1d6f2c5bd8d5263000

    相关文章

      网友评论

          本文标题:Python SMTP发送邮件

          本文链接:https://www.haomeiwen.com/subject/idfycftx.html