利用python发送邮件

找了很多使用python发送邮件的文章, 发现写的并不是太全, 导致坑特别多, 刚把这个坑跨过去, 在此记录下来

本代码使用163作为发送客户端, 接收邮箱随意
首先登录163邮箱, 开启POP3/SMTP/IMAP服务, 此过程需要验证第三方客户端登录验证权限, 并单独设置一个授权密码, 这个密码要记住

#!/usr/bin/env python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText


def send_mail(target_mail, content, subject):
    #收件人
    to_user = target_mail
    #发件人
    from_user = 'xxx@163.com'
    #注意这里的密码是之前开启服务时的授权码, 并不是邮箱密码
    from_mail_pass = 'xxxxxxxx'
    #这个是163的smtp服务器
    mail_host = 'smtp.163.com'

    msg = MIMEText(content, _subtype='plain', _charset='us-ascii')
    #邮件主题
    msg['Subject'] = subject
    msg['From'] = from_user
    msg['To'] = to_user

    #连接服务器
    server = smtplib.SMTP()
    server.connect(mail_host)
    #使用ehlo声明表示需要认证, 之后才能登录
    server.ehlo()
    #starttls表示提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。
    server.starttls()

    server.login(from_user, from_mail_pass)
    #发送邮件
    server.sendmail(from_user, to_user, msg.as_string())
    server.close()
    print '发送成功'


target_mail = raw_input('收件人: ')
subject = raw_input('主题: ')
content = raw_input('正文: ')

send_mail(target_mail, content, subject)

具体邮件流程参考: http://www.cnblogs.com/yank/archive/2008/08/03/1258428.html

原文地址:https://www.cnblogs.com/qlshine/p/5928438.html