首页 > 编程语言 >Python开发实例(十五)电子邮件自动化:编写一个程序,自动发送电子邮件或处理收件箱

Python开发实例(十五)电子邮件自动化:编写一个程序,自动发送电子邮件或处理收件箱

时间:2023-09-09 22:02:03浏览次数:37  
标签:attachments Python smtp 收件箱 server 发送 msg 电子邮件 email

在这个实例中,我们将使用Python编写一个程序,实现自动发送电子邮件的功能。我们将使用Python的smtplib库来发送电子邮件。

首先,请确保你已经安装了smtplib库。如果没有安装,可以通过以下命令来安装:

pip install secure-smtplib

下面是一个自动发送电子邮件的Python程序:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

def send_email(subject, body, from_email, to_email, smtp_server, smtp_port, username, password, attachments=None):
    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = subject

    msg.attach(MIMEText(body, 'plain'))

    if attachments:
        for attachment in attachments:
            with open(attachment, "rb") as file:
                part = MIMEApplication(file.read())
                part.add_header('Content-Disposition', f'attachment; filename="{attachment}"')
                msg.attach(part)

    try:
        with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
            server.login(username, password)
            server.sendmail(from_email, to_email, msg.as_string())
        print("邮件发送成功!")
    except smtplib.SMTPException as e:
        print(f"邮件发送失败:{e}")

if __name__ == "__main__":
    # 邮件配置
    subject = "测试邮件"
    body = "这是一封测试邮件,自动发送。"
    from_email = "[email protected]"  # 替换为发件人邮箱地址
    to_email = "[email protected]"  # 替换为收件人邮箱地址
    smtp_server = "smtp.example.com"  # 替换为SMTP服务器地址
    smtp_port = 465  # SMTP服务器端口号
    username = "your_username"  # 替换为发件人邮箱用户名
    password = "your_password"  # 替换为发件人邮箱密码

    # 附件列表,如果没有附件可以设置为None
    attachments = ["file1.txt", "file2.pdf"]

    send_email(subject, body, from_email, to_email, smtp_server, smtp_port, username, password, attachments)

在上述代码中,我们定义了一个send_email函数,用于发送电子邮件。你需要将邮件配置部分替换为你自己的信息,包括发件人邮箱、收件人邮箱、SMTP服务器地址、SMTP服务器端口号、发件人邮箱用户名和密码。

如果你有附件需要发送,可以将附件文件名添加到attachments列表中。如果没有附件,可以将attachments设置为None。

运行程序后,它将自动发送一封测试邮件。请确保你的邮箱配置信息正确,以确保邮件可以成功发送。

注意:为了安全起见,请确保不要将真实的邮箱用户名和密码直接写入代码中。最好将这些敏感信息存储在配置文件或环境变量中,并在程序中进行读取。

标签:attachments,Python,smtp,收件箱,server,发送,msg,电子邮件,email
From: https://blog.51cto.com/u_16160172/7421144

相关文章

  • Python学习笔记-Python判断语句
    布尔类型和比较运算符布尔类型进行判断,只有2个结果:是否程序中,如何描述:是或否?使用:布尔类型。Python中常用的6种值(数据)的类型类型描述说明数字(Number)支持整数(int)浮点数(float)复数(complex)布尔(bool)整数(int),如10、-10浮点数(float),如13.14、-13.14复数(complex),如4+3j,以j结尾表示复数布尔(bool)......
  • 新人如何快速学会Python
    要快速学会Python,首先要了解Python的基本语法和数据类型。Python是一种解释型语言,具有简单易学、高效开发、库丰富等特点。首先,需要掌握Python的基本语法,例如变量、数据类型、控制流语句、函数等。可以通过阅读官方文档、在线教程、书籍等方式进行学习。同时,可以尝试编写简单的Pyt......
  • python学习笔记-celery介绍和使用
    一、celery介绍1、简介celery是分布式任务队列celery在执行任务时需要一个消息中间件来接收和发送消息,以及存储结果,一般使用rabbitmq,rediscelery的优先:简单:配置和使用比较简单高可用:当任务失败或执行过程中连接中断,celery会自动尝试重新执行快速:每分钟可处理上百万个任务灵活:几......
  • Python第四章序列(2):元组
    1.创建元组:  a=('a',2009) //与列表不同,用圆括号  a=()  a=(20,) //当元组中只包含一个元素的时候,需要在元素后加逗号,不然括号会被当成运算符2.元组访问:  a[1]   a[2:5] //也可以用切片  也可以用for的遍历。3.修改元组:  元组不允许......
  • Python第四章序列(1):列表
    1.列表的创建:  a=['hallo','guten',[2002,2223]]  empty_list=[]2.获得列表长度:  len(a)3.创建数值列表:  a=list(range(1,6))  //1到6的列表  b=list(range(1,11,2))  //1到10的奇数列表  c=list(random.sample((0,50),20)) //0到50的......
  • python-day4
    1.两数之和(input高级应用)num1=int(input('num1='))num2=int(input('num2='))print(num1+num2)或者num1=input('num1=')num2=input('num2=')print(type(num1))print(type(num2))print(int(num1)+int(num2))2.运算符算术运算符num1=int(input(�......
  • Python获取主目录的方法
    用os.path.expanduser模块获取主目录为了获得用户的主目录,我们可以使用Python中的os.path.expanduser。我们必须在os.path.expanduser()函数里面传递一个字符串字符~,它将返回当前登录用户的主目录路径。它使用内置的密码数据库或pwd模块来搜索主目录的路径,pwd模块提供用户......
  • Python教程:sys.stdout方法
    Python中sys模块中的一个方法是stdout,它使用其参数直接显示在控制台窗口上。这些种类的输出可以是不同的,像一个简单的打印语句,一个表达式,或者一个输入提示。print()方法,它有相同的行为,首先转换为sys.stdout()方法,然后在控制台显示结果。sys.stdout方法的语法sys.stdout......
  • Python中跨越多个文件使用全局变量
    这个琐碎的指南是关于在Python中跨多个文件使用全局变量。但是在进入主题之前,让我们简单地看看全局变量和它们在多个文件中的用途。Python中的全局变量全局变量是不属于函数范围的变量,可以在整个程序中使用。这表明全局变量也可以在函数体内部或外部使用。让我们看一个例子:......
  • 初识python--python中的字符串
    python中的字符串1、字符串的定义与访问字符串的定义字符串是一种常见的数据类型=>数据容器的一种,一个变量中可以同时保存多个字符基本语法:使用双引号(三引号的形式支持字符串的换行)变量名称='字符串'变量名称="字符串"#三引号变量名称=''' 锄禾日当午, 汗滴......