zoukankan      html  css  js  c++  java
  • 利用Python发送邮件

    Python对SMTP支持有smtplibemail两个模块,email负责构造邮件,smtplib负责发送邮件。

    首先要对邮箱进行设置,这里以QQ邮箱为例:

    打开QQ邮箱后,选择“设置-账户”,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”

    开启pop3/smtp服务,并保存该授权码作为密码使用--生成授权码

     

     最后代码如下:

     1 # -*- coding:utf-8 -*-
     2 import smtplib
     3 from email.mime.text import MIMEText
     4 from email.mime.image import MIMEImage
     5 from email.mime.multipart import MIMEMultipart
     6 
     7 class send_email():
     8     def __init__(self):
     9         self.Host = "smtp.qq.com"                # QQ邮箱服务地址
    10         self.Subject = input("请输入邮件标题:") # 设置邮件标题
    11         self.From = input("请输入发件人地址:")  # 设置发件人邮箱
    12         self.To = input("请输入收件人地址:")    # 设置收件人邮箱(多个用逗号隔开)
    13 
    14     # ==========================发送文本====================
    15     # 发送邮件主体到对方的邮箱中
    16     def email_text(self,message):
    17         message_text = MIMEText(_text='<h2 style="color:red;font-size:100px"><a href="http://www.baidu.com">这是一个链接</a></h2>',_subtype='html', _charset='utf-8')
    18         message.attach(message_text)
    19 
    20 
    21     # ==========================发送图片====================
    22     def email_image(self,message):
    23         image_data = open(file="123456789.jpg", mode="rb")
    24         message_image = MIMEImage(_imagedata=image_data.read(), _subtype="base64", _charset="utf-8")
    25 
    26         # 设置文件在附件当中的名字
    27         message_image['Content-disposition'] = 'attachment;filename = "text.jpg"'
    28         image_data.close()
    29         message.attach(message_image)
    30 
    31     # ==========================发送附件====================
    32     def email_file(self,message):
    33         file_data = open(file=r"C:UserslenovoDesktopincome.xlsx", mode="rb")
    34         message_file = MIMEText(_text=file_data.read(), _subtype="base64", _charset="utf-8")
    35 
    36         # 设置文件在附件当中的名字
    37         message_file['Content-Disposition'] = 'attachment;filename="textfile.xlsx"'
    38         file_data.close()
    39         message.attach(message_file)
    40 
    41 
    42     # ========================发送邮件======================
    43     def init_email(self):
    44         message["From"] = self.From              # 设置邮件发件人
    45         message["To"] = self.To                   # 设置邮件接收人
    46         message["Subject"] = self.Subject         # 设置邮件标题
    47 
    48         # 获取简单邮件传输协议证书
    49         email_client = smtplib.SMTP_SSL(host="smtp.qq.com")
    50 
    51         # 设置发件人邮箱的域名和端口
    52         email_client.connect(host="smtp.qq.com", port="465")
    53 
    54         # 登陆邮件,权限验证,password为邮箱授权码
    55         result = email_client.login(user=self.From, password="eejjgbvxpzyadhhg")
    56         print("登录结果:", result)
    57 
    58         # 发送邮件,from_addr:发送人,to_addrs:收件人,msg:发送的文本
    59         email_client.sendmail(from_addr=self.From, to_addrs=self.To, msg=message.as_string())
    60 
    61         # 关闭邮件客户端
    62         email_client.close()
    63 
    64 
    65 
    66 if __name__ == '__main__':
    67     # 创建一个邮件对象
    68     message = MIMEMultipart()
    69     email = send_email()            # 调用对象
    70 
    71     # email.email_text(message)       # 调用对象的方法
    72     email.email_image(message)
    73     # email.email_file(message)
    74 
    75     email.init_email()
  • 相关阅读:
    java常见面试题汇总(三)
    Java学习流程图(学习路线、书籍、教程推荐)
    java开发面试题:spring面试题总结
    2014.11.12模拟赛【最大公因数】
    2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
    vijos1781 同余方程
    vijos1777 引水入城
    2014.10.31我出的模拟赛【天神下凡】
    voijs1883 月光的魔法
    2014.10.31我出的模拟赛【藏宝图】
  • 原文地址:https://www.cnblogs.com/zhaco/p/12002901.html
Copyright © 2011-2022 走看看