Python SMTP模块smtplib详解与邮件发送

0 下载量 108 浏览量 更新于2024-08-31 收藏 73KB PDF 举报
"这篇资源是关于Python模块`smtplib`的学习资料,主要讲解了如何使用`smtplib`发送电子邮件,并介绍了SMTP协议的基本命令,包括HELO、MAIL、RCPT、DATA等,以及邮件投递的两种方式:直接投递和验证后发送。还提供了示例代码,展示了使用`smtplib`发送邮件的过程。" 在Python编程中,`smtplib`模块是用来发送电子邮件的。它提供了对简单邮件传输协议(SMTP)的接口,使得程序员能够方便地构建邮件发送功能。SMTP是一种互联网标准,用于在邮件服务器之间传递邮件。 SMTP协议中包含一系列的基本命令,如: 1. **HELO**:向服务器打招呼,标识客户端的身份。 2. **MAIL FROM:** 初始化邮件传输,设置邮件的发送者地址。 3. **RCPT TO:** 指定邮件的接收人,可以有多个。 4. **DATA:** 表示所有接收人已经设定,开始传输邮件的实际内容,以`.`结束。 5. **VRFY**:验证指定的用户或邮箱是否存在,但通常由于安全原因会被服务器禁用。 6. **EXPN**:查询邮箱列表是否存在,也可能被禁用。 7. **HELP**:查询服务器支持的命令。 8. **NOOP**:无操作,服务器应返回OK响应。 9. **QUIT**:结束会话。 10. **RSET**:重置会话,取消当前的邮件传输。 使用`smtplib`发送邮件时,有两种主要的SMTP会话方式: - **直接邮件投递**:直接连接到接收方邮件服务器,将邮件直接发送给指定的接收者。这种方式通常要求接收者地址必须在目标服务器上有效。 - **验证后发送**:首先连接到自己的邮件服务器进行身份验证,然后由自己的邮件服务器代为转发邮件至目标地址。这种方式可以避免直接连接到目标服务器,适合于跨域发送邮件。 以下是一个使用`smtplib`发送邮件的Python代码示例: ```python import smtplib from email.mime.text import MIMEText def send_email(): # 邮件服务器地址 mail_server = "smtp.163.com" # 发件人邮箱 from_addr = "your_address@your_domain.com" # 密码(可能需要授权码) password = "your_password" # 收件人邮箱 to_addr = "receiver@example.com" # 创建SMTP对象 smtp_obj = smtplib.SMTP(mail_server, port=25) # 连接SMTP服务器 smtp_obj.connect(mail_server, 25) # 登录邮箱 smtp_obj.login(from_addr, password) # 创建邮件 msg = MIMEText("测试邮件", "plain", "utf-8") msg['From'] = from_addr msg['To'] = to_addr msg['Subject'] = "测试邮件主题" # 发送邮件 smtp_obj.sendmail(from_addr, to_addr, msg.as_string()) # 关闭连接 smtp_obj.quit() send_email() ``` 在实际应用中,你需要替换`from_addr`、`password`、`to_addr`以及`mail_server`为你自己的邮箱信息。注意,一些邮箱服务商可能需要使用SSL或TLS加密连接,这时你需要在连接时指定相应的端口和开启加密模式。 通过理解和使用`smtplib`,你可以轻松地在Python程序中集成邮件发送功能,这对于自动化任务、通知服务或者日常的通信需求都非常有用。