Python基于smtplib协议实现发送邮件

作者:多测师_王sir 时间:2021-03-02 07:26:36 

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。

  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。

  • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

代码如下


#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020/5/20 17:24
Wechat:15367499889
Company:上海多测师信息有限公司
===========================
"""

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from common.handleconfig import conf

def send_email(filename, title):
 """
 发送邮件的功能函数
 :param filename: 文件的路径
 :param title:  邮件的主题
 :return:
 """
 # 第一步:连接邮箱的smtp服务器,并登录
 smtp = smtplib.SMTP_SSL(host=conf.get("email", "host"), port=conf.getint("email", "port"))
 smtp.login(user=conf.get("email", "user"), password=conf.get("email", "pwd"))

# 第二步:构建一封邮件
 # 创建一封多组件的邮件
 msg = MIMEMultipart()

with open(filename, "rb") as f:
   content = f.read()
 # 创建邮件文本内容
 text_msg = MIMEText(content, _subtype="html", _charset="utf8")
 # 添加到多组件的邮件中
 msg.attach(text_msg)
 # 创建邮件的附件
 report_file = MIMEApplication(content)
 report_file.add_header('content-disposition', 'attachment', filename=os.path.split(filename)[-1])
 # 将附件添加到多组件的邮件中
 msg.attach(report_file)

# 主题
 msg["Subject"] = title
 # 发件人
 msg["From"] = conf.get("email", "from_addr")
 # 收件人
 msg["To"] = conf.get("email", "to_addr")

# 第三步:发送邮箱
 smtp.send_message(msg, from_addr=conf.get("email", "from_addr"), to_addrs=conf.get("email", "to_addr"))

来源:https://www.cnblogs.com/xiaoshubass/p/13021508.html

标签:Python,smtplib,协议,发送,邮件
0
投稿

猜你喜欢

  • MySQL transaction事务安全示例讲解

    2024-01-25 17:47:38
  • Vue3.0 自己实现放大镜效果案例讲解

    2024-04-09 10:45:54
  • python判断变量是否为int、字符串、列表、元组、字典的方法详解

    2022-09-28 05:11:57
  • PyTorch搭建多项式回归模型(三)

    2022-09-04 00:43:49
  • CentOS 7.2下MySQL的安装与相关配置

    2024-01-16 23:21:29
  • JS实现两周内自动登录功能

    2023-08-04 21:20:57
  • Vue中Axios的封装与接口管理详解

    2024-04-30 10:28:36
  • 解析:怎样在MySQL中获得更好的搜索结果

    2008-11-27 15:19:00
  • 详解django的serializer序列化model几种方法

    2022-12-06 00:40:08
  • 七种Python代码审查工具推荐

    2021-06-16 07:07:34
  • cookies应对python反爬虫知识点详解

    2023-12-16 06:15:18
  • 分享PHP header函数使用教程

    2023-09-04 12:07:14
  • python冒泡排序简单实现方法

    2022-09-27 12:28:57
  • SQLServer2019 数据库环境搭建与使用的实现

    2024-01-16 12:45:48
  • 解决Python运算符重载的问题

    2022-07-04 23:09:33
  • python 字符串转列表 list 出现\\ufeff的解决方法

    2023-11-24 18:47:06
  • 对用户研究实践的思考

    2010-10-19 12:21:00
  • golang:json 反序列化的[]和nil操作

    2024-04-26 17:19:24
  • mysql5.7创建用户授权删除用户撤销授权

    2024-01-22 17:52:11
  • 详解JavaScript实现JS弹窗的三种方式

    2024-04-19 10:42:20
  • asp之家 网络编程 m.aspxhome.com