Python使用SMTP协议发送邮件

前言

操作系统:Windows10专业版
Python版本:Python 3.8
开发软件:Pycharm Community 2022.3
第三方库:email

发送电子邮件是个很常见的开发需求。

比如你写的天气预报程序、日程待办程序、商品降价提醒等等,你都可以采用这种方式来写一个邮件发送函数来为自己服务。

Python发送邮件并不复杂,各个国家各个公司都有自己不同的安全策略,我们只演示腾讯的QQ邮箱。

一、前期准备(一定要做!)

我们想要用QQ邮箱发送邮件,不可能只填写一个邮箱账号就可以的,而使用用户登录密码的方式不太安全,所以我们需要一个授权码

1.QQ邮箱授权码

在这个网站 登录QQ邮箱 登录自己的QQ账号,不推荐重新注册新的,QQ邮箱重新注册的邮箱的话是两周内是不能获取授权码的。
在这里插入图片描述

登录进去后点击此处设置

在这里插入图片描述

在设置界面点击这个 “账户”

在这里插入图片描述

往下翻,直到看见下图的东西

在这里插入图片描述

我们要将第一个服务开启,也就是POP3/SMTP服务,这时候需要我们用注册的手机号给指定号码发短信,资费是0.1元/条。

然后点击生成授权码,这个也是与上图一样是需要发短信的。

在这里插入图片描述

上一个是启用pop3协议,这一个是获取授权码。

发送好后点击我已发送,然后就会弹出你的授权码

在这里插入图片描述
复制这一串字符,这个就是你的所登录的账号QQ邮箱的授权码了,记得要复制好后再关闭这个界面,否则的话又要重新发短信(身家 - 0.1元)。

2.email库的安装

这里我推荐使用Pycharm来安装:设置–>项目–>项目–>Python解释器–>小加号–>输入email然后安装就好了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

等它安装好以后那么就可以继续下一步了。

二、代码部分

# code:utf-8
# Create by __H2__
# 2023/3/28
import smtplib
from email.mime.text import MIMEText

# 下面两行是发件人信息,这里要填你自己的账号信息
msg_from = '**********' # 这里填写你自己的邮箱
key = '*********'   #这里填写我让你注册的邮箱授权码,


# 下面三个变量分别是收件人、邮件标题、邮件内容
msg_to = "1322386539@qq.com" # 填收件人邮箱(如你的室友,这个是我自己的)
title = "邮件测试"
text = """
HelloWorld!

This is a smtp test.

You had do it.

其实中文也不是不行。

日本語は不可能ではない.

But I would like to use English.
"""

def send(msg_to,tittle,text):
        """发送邮件函数"""
        
        # 邮件基本信息
        msg_to = msg_to # 收件人邮箱
        subject = tittle # 邮件标题
        content = text # 邮件内容,可以是一大段文本

        #构造邮件
        msg = MIMEText(content)
        msg['Subject'] = subject
        msg['To'] = msg_to
        msg['From'] = msg_from

        #发送邮件
        try:
                ss = smtplib.SMTP_SSL('smtp.qq.com',465)  #465:QQ邮箱服务器的端口号
                ss.login(msg_from,key)
                ss.sendmail(msg_from,msg_to,msg.as_string()) #发送
                print('邮箱发送成功!')
                
        except Exception as e:
                print('邮箱发送失败!详情:',e)


send(msg_to=msg_to,tittle=title,text = text)

三、实际效果

如下图所示:

此代码还有值得优化的空间,如将压缩包一起发送、使用图形化界面来简化这个发送步骤。
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python可以使用smtplib和poplib模块来实现基于SMTP和POP3协议的邮件发送小程序。首先,我们需要使用smtplib模块来连接到SMTP服务器,并通过SMTP协议发送邮件。接着,我们可以使用poplib模块来连接到POP3服务器,通过POP3协议接收邮件。 我们可以使用以下的步骤来实现这个小程序: 1. 导入smtplib和poplib模块 2. 设置SMTP服务器的主机和端口,例如`smtp_server = 'smtp.example.com'`,`smtp_port = 25` 3. 连接到SMTP服务器,例如`smtp_conn = smtplib.SMTP(smtp_server, smtp_port)` 4. 登录到SMTP服务器,例如`smtp_conn.login('username', 'password')` 5. 设置发件人、收件人和邮件内容,例如`from_addr = 'sender@example.com'`,`to_addr = 'recipient@example.com'`,`message = 'This is a test email'` 6. 发送邮件,例如`smtp_conn.sendmail(from_addr, to_addr, message)` 7. 关闭与SMTP服务器的连接,例如`smtp_conn.quit()` 对于接收邮件部分,我们也可以使用以下步骤: 1. 设置POP3服务器的主机和端口,例如`pop_server = 'pop.example.com'`,`pop_port = 110` 2. 连接到POP3服务器,例如`pop_conn = poplib.POP3(pop_server, pop_port)` 3. 登录到POP3服务器,例如`pop_conn.user('username')`,`pop_conn.pass_('password')` 4. 获取邮件列表,例如`num_messages = len(pop_conn.list()[1])` 5. 获取并打印邮件内容,例如`for i in range(num_messages): print(pop_conn.retr(i+1))` 6. 关闭与POP3服务器的连接,例如`pop_conn.quit()` 通过这个Python小程序,我们可以实现基于SMTP和POP3协议的邮件发送和接收功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT_H2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值