Python 使用smtp发送邮件

注意:

1.我使用的我的163的邮箱发邮件到qq邮箱,在运行代码之前,你要先开启163,和qq邮箱的smtp服务,具体开启方式百度,可以找到。否则会出错socket.gaierror: [Errno 11001] getaddrinfo failed

2.我发送邮件的服务器地址:smtp.163.com


#!/usr/bin/python

# coding=utf-8


#email负责构造邮件,smtlib负责发送邮件

from email.mime.text import MIMEText
from email import encoders
from email.header import Header
from email.utils import parseaddr, formataddr
import smtplib


#格式化一个邮件地址
def _format_addr(s):
    name, addr = parseaddr(s)#parseaddr内置函数,见于email.utils, 用来解析字符串中的email地址
    return formataddr((Header(name, 'utf-8').encode(), addr.encode('utf-8') if isinstance(addr, unicode) else addr))

#输入email的地址和口令
from_addr = raw_input('from : ')
password = raw_input('password : ')
#输入smtp服务器地址
smtp_server = raw_input('smtp server : ')
#输入收件人的地址
to_addr = raw_input('to : ')

msg = MIMEText('hello, send by python ...', 'plain', 'utf-8')
#设置发送的内容,以及用utf-8来保证多语言兼容性
msg['from:'] = _format_addr(u'python 爱好者<%s>'%from_addr)#设置友好的发件人姓名
msg['to:']= _format_addr(u'管理员<%s>'%to_addr)#设置收件人的姓名
msg['subject'] = Header(u'来自SMTP的问好', 'utf-8').encode()#设置主题 

server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1) #打印出来和SMTP服务器交互的所有信息
server.login(from_addr, password)#用来登录SMTP服务器
server.sendmail(from_addr, [to_addr], msg.as_string()) #发送邮件

server.quit()









你可能感兴趣的:(Python)