zoukankan      html  css  js  c++  java
  • python发送邮件

    先说好,只是python,没用到django封装的类。

    要实现发送邮件功能,要用到两个类,一是smtplib,用于发邮件,二是MiMEText,用于制作邮件。

    先定义好发信人和收件人的大概信息,如下:

    mailto_list=['XXXXXXXXX@qq.com','XXX@163.com']     #收件人列表
    mail_host = "smtp.163.com"                   #发送邮件的邮箱的smtp服务器地址
    mail_user = "username"                       #用户名
    mail_pass = "password"                       #密码
    mail_postfix = "163.com"                     #发信人邮箱的后缀    

    定义一个发送邮件的函数:

    def send_mail(to_list,subject,content):
        me = "Hello"+"<"+mail_user+"@"+mail_postfix+">"
        msg = MIMEText(content,_subtype='plain',_charset='utf-8')
        msg['Subject'] = subject                     #主题
        msg['Form'] = me                          #from,发件人
        msg['To'] = ";".join(to_list)                 #to,收件人
        try:
    server
    = smtplib.SMTP() server.connect(mail_host)                 #连接到发送邮件的服务器 server.login(mail_user,mail_pass)            #用户登录 server.sendmail(me,to_list,msg.as_string())      #发邮件 server.close()                       #关闭连接   return True except Exception,e: print str(e) return False

    然后直接调用该函数,

    if send_mail(mailto_list,'你好','你好啊'):
        print("Done")
    else:
        print('Fail')

    做到这个程度,但是发送邮件失败,提示了一个错误:User has no permission,这个是邮箱的问题,去邮箱页面-->设置-->POP3/SMTP/IMAP(我的是163邮箱),把这三个服务都开启就好。

    能发送邮件了。

    但是为什么会这样

    ,乱码了。那就修改一下代码。

    先规定主题的字符编码格式:

    if send_mail(mailto_list,u'你好',u'你好啊'):

    第二手准备:

    
    
    def send_mail(to_list,sub,content):
      if not isinstance(subject,unicode)
        sub = unicode(subject)

    这样主题就ok了,其次是发件人

    me = ("%s<XXXXXXXX@163.com>") % (Header('我是发件人名字','utf-8'),)

    最后是文件内容:

    msg = MIMEText(content,_subtype='plain',_charset='utf-8')
    msg["Accept-Language"]="zh-CN"
    msg["Accept-Charset"]="ISO-8859-1,utf-8"

    MIMEText的charset设置为utf-8,还有规定接收的语言和编码方式。

    至此,基本上乱码问题就解决啦。

  • 相关阅读:
    为Jupyter只安装目录的扩展包
    前端菜鸟的小程序摸索记录
    小计:Shopee批量删除修复~附脚本
    Python3 与 C# 并发编程之~ 协程篇
    记一次硬件故障,并普及点硬件知识
    小计:协同办公衍生出的需求
    监控MySQL|Redis|MongoDB的执行语句(go-sniffer)
    Linux IO实时监控iostat命令详解
    Linux下的磁盘缓存
    使用top命令查看系统状态
  • 原文地址:https://www.cnblogs.com/Xw-liang/p/4923557.html
Copyright © 2011-2022 走看看