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()

用python发邮件

相关文章:

  • 2022-02-05
  • 2021-10-06
  • 2021-06-03
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-23
  • 2021-05-13
  • 2021-08-23
  • 2021-10-21
相关资源
相似解决方案