• python SMTP 发送邮件


    python SMTP 发送邮件几个常用的包与类:

    email 包:

    mime:

      base.MIMEBase  构造一个message的组件,可以用add_header('设置头信息')

      multipart.MIMEMultipart 产生一个中间件,可以用attach(组件)往里面添加组件。

      text.MIMEText 构造一个纯文本。

    header: 设置To、From、Sub  的非ascii编码

    encoders:用于转换编码

    utils:里面提供了一些工具方法。

    具体代码:

     1 #!C:Python34
     2 # -*- coding:utf-8 -*-
     3 from email import encoders #提供各种转换编码的方法
     4 from email.header import Header #将非ascii编码转换为ascii编码
     5 from email.mime.text import MIMEText #用于发送纯文本格式的邮件
     6 from email.mime.multipart import MIMEMultipart #用于产生一个中间件
     7 from email.utils import parseaddr, formataddr #格式化收件人 地址
     8 from email.mime.base import MIMEBase
     9 
    10 import smtplib
    11 import logging
    12 
    13 def _format_addr(s):
    14     name, addr = parseaddr(s)
    15     return formataddr((Header(name, 'utf-8').encode(), addr))
    16 
    17 from_addr = 'xxxx';#input(u'请输入136邮箱账号:');
    18 password = 'xxxx';#input(u'请输入密码:')
    19 to_addr = 'xxxx';#input(u'请输入对方邮箱:')
    20 smtp_server = "xxxx";
    21 smtp_port = 25;
    22 
    23 def send_mail (to_list,sub,content,base):
    24     #to_list 接收者列表
    25     # sub 邮件主题
    26     # content 邮件内容
    27     # base 附件名称
    28     msg = MIMEMultipart();
    29     msg['From'] = _format_addr('Python 爱好者 <%s>'% from_addr)
    30     msg['To'] = ';'.join (to_list)
    31     msg['Subject'] = Header(sub,'utf-8').encode();
    32 
    33     msg.attach(MIMEText(content,'html','utf-8'));
    34     #附件
    35     with open(r'G:	emppictrue\'  + base,'rb') as f:
    36         #设置附件的MIME和文件名
    37         mime = MIMEBase('image','jpg',filename = base);
    38         #设置必要的头信息
    39         mime.add_header('Content-Desposition','attachment',filename = base);
    40         mime.add_header('Content-ID','<0>');
    41         mime.add_header('X-Attachment-Id','0');
    42         #把附件内容添加进来
    43         mime.set_payload(f.read());
    44         #转换为base64
    45         encoders.encode_base64(mime);
    46         #添加到MIMEMultipart
    47         msg.attach(mime)
    48         
    49     try:
    50         server = smtplib.SMTP(smtp_server,smtp_port);
    51         #建立安全连接
    52         server.starttls();
    53         server.login(from_addr,password);
    54         server.sendmail(from_addr,to_list,msg.as_string())
    55         return True;
    56     except Exception as e :
    57         logging.exception(e);
    58         return False;
    59     finally :
    60         server.quit();
    61         print('server 关闭');
    62 #发送内容
    63 content = r'<html><body><h3>Hello</h3><p>send By Python! wish you a happy holidays 想学习python 请点击<a href="http://www.python.org">python</a></p><img src="cid:0"></body></html>'
    64 sub = '来自SMTP的问候'
    65 base = '2.jpg'
    66 if send_mail([to_addr],sub,content,base):
    67     print('发送成功');
    68 else :
    69     print('发送失败');
    View Code
  • 相关阅读:
    html +JS 自学
    Linux下SVN多版本库管理
    Jenkins更换国内源
    Kubernetes Service
    Kubernetes Pod
    ubuntu下vim配置日常工作版本
    PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)
    mongodb 片键需要思考的问题
    SpringBoot--Easycode插件自定义模板
    Docker-概述
  • 原文地址:https://www.cnblogs.com/hf-china/p/5130626.html
Copyright © 2020-2023  润新知