如何用Python发邮件

今天来教大家如何使用代码来发邮件,可以直接封装成方法,方便快捷,就以163邮箱和qq邮箱为实例

 

 

一、申请邮箱POP3/SMTP协议的授权码

这里说一下为什么要申请这个东西?

授权码多用于第三方登录,我们使用代码发邮件时,设置的密码不是登录密码,而是这个授权码

一定要记好这个授权码,尽量保存到自己的邮箱或记事本中

(1)qq邮箱

进入邮箱 >>> 设置 >>> 账户 >>> 找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

(2)163邮箱,步骤如下

然后根据提示开启

 

二、导入模块

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

smtplib:全称为  simple mail transfer protocol libraty ,意思为简单邮件传输协议图书馆

MIME:用于邮件扩充协议

 

三、具体代码实现

因为我们要封装起来,所以先建一个类,定义两个类属性

email:使用内嵌形式

email_client:获取SMTP的证书

class Send_email(object):
    email = MIMEMultipart('related')
    email_client = smtplib.SMTP_SSL()

 

(1)登录邮箱

参数一:你的邮箱名

参数二:你的授权码

@classmethod
def email_type(cls,email_from,password):
    host = 'smtp.' + email_from.split('@')[1]
    cls.email['From'] = email_from
    cls.email_client.connect(host,'465')
    cls.email_client.login(email_from,password)

 

(2)写入内容,纯文本形式

参数:邮件内容

@classmethod
def write_email_text(cls,text):
    email = MIMEText(text,'plain','utf-8')
    cls.email.attach(email)

 

(3)写入附件

参数一:要发送的附件名(带后缀)

参数二:重新命名的附件名(带后缀)

@classmethod
def write_eamil_accessory(cls,file_name,new_name):
    email_accessory = MIMEText(open(file_name,'rb').read(),'base64','utf-8')
    email_accessory.add_header("Content-Disposition","attachment",filename=("utf-8","",new_name))
    cls.email.attach(email_accessory)

 

(4)发送邮件(可群发) 

参数一:邮件标题

参数二:接收者(群发用逗号隔开)

@classmethod
def send_email(cls,subject,receiver):
    cls.email['Subject'] = subject
    if ',' in receiver:                  
        cls.email_client.sendmail(from_addr=cls.email['From'],to_addrs=receiver.split(','),msg=cls.email.as_string())
    else:    
        cls.email_client.sendmail(from_addr=cls.email['From'],to_addrs=receiver,msg=cls.email.as_string())
    cls.email_client.close()

 

之后只需要按顺序调用方法就行了,是不是很简单,快去试试吧

 

### 使用 Python 的 `smtplib` 和 `email` 库发送带多个附件的邮件 为了实现这一功能,可以利用 `email` 库中的不同模块来创建复杂的邮件结构,并通过 `smtplib` 来完成实际的邮件传输过程。下面是一个详细的例子说明如何构建一封含有多个文件作为附件的电子邮件。 #### 构建多部分消息体 首先需要导入必要的包: ```python from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os ``` 接着定义函数用来读取本地磁盘上的文件并将其转换成适合网络传输的形式: ```python def attach_file_to_email(email, filename): with open(filename, "rb") as attachment: part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) # 添加头部信息给payload部分 part.add_header( 'Content-Disposition', f'attachment; filename= {os.path.basename(filename)}' ) # 将part附加到message对象上 email.attach(part) ``` 现在准备主要逻辑流程,在这里会指定发件人、收件人以及主题等内容;同时调用上述辅助方法加入所需的所有附件: ```python msg = MIMEMultipart() msg['From'] = sender_address # 替换成真实的发信方地址 msg['To'] = receiver_address # 收信方列表可以用逗号分隔字符串表示 msg['Subject'] = subject_line # 主题行文字描述 body_text = body_content # 正文内容 msg.attach(MIMEText(body_text, 'plain')) files = ['file1.pdf', 'image.png', 'document.docx'] for file in files: attach_file_to_email(msg, file) ``` 最后一步就是连接 SMTP 服务器并将构造好的邮件发出: ```python server = smtplib.SMTP(smtp_server, port_number) server.starttls() # 启动TLS加密模式 server.login(sender_address, password) # 登录SMTP服务器 text = msg.as_string() server.sendmail(sender_address, receivers_list.split(','), text) server.quit() ``` 以上代码片段展示了完整的操作步骤,其中包含了设置基本属性、添加正文与附件的操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值