python内置对smtp支持,可发送纯文本,html以及带附件的邮件
以下是发送纯文本邮件的代码:
#把email模块和smtplib模块引入进来,使用MIMEText构造了邮件内容
from email import encoders
from email.mime.text import MIMEText
import smtplib
from email.header import Header
from email.utils import parseaddr,formataddr
#MIMEText中第一个参数是邮件内容,第二个参数MIME的subtype;text/plain,第三个参数是编码格式
def _format_addr(s):
name,addr=parseaddr(s)
return formataddr((Header(name,'utf-8').encode(),addr))
#输入email的地址和口令:
from_addr=input('From:')
#邮件设置口令为开启qq账户安全的POP3/SMTP服务时生成的口令。请参看截图
password=input('Password:')
#输入SMTP服务器地址:
smtp_server=input('SMTP server:')
#输入收件人地址:
#发送邮件为一个人
to_addr=input('To:')
#发送邮件为多个人时
to_addr=[]
while True:
to_email=input('To:')
to_addr.append(to_email)
ask=input('是否继续输入收件人,按任意键继续, 按n退出:')
if ask=='n':
break
content='''
亲爱的:
宝贝,一天天你正在长大
感谢你一直陪在我身边,
'''
msg=MIMEText(content,'plain','utf-8')
msg['From']=_format_addr(u'问候<%s>'%from_addr)
msg['To']=_format_addr(u'rachel<%s>'%to_addr)
msg['Subject']=Header(u'来自rachel的问候...','utf-8').encode()
server=smtplib.SMTP_SSL(smtp_server,465)
#set_debuglevel(1)就可以打印出和SMTP服务器交互的所有信息
server.set_debuglevel(1)
server.login(from_addr,password)
#发送邮件为一个人时
server.sendmail(from_addr,[to_addr],msg.as_string())
#发送邮件为多个人时
server.sendmail(from_addr,to_addr,msg.as_string())
#server.quit()语句是邮件发送结束后,停止服务
server.quit()