• Python邮件发送程序代码


    1. # -*- coding:utf-8 -*-
    2. # 2024-3-4
    3. # Pythonit教程网:blog.pythonit.cn
    4. # 云服务器地址:woaiyundun.cn
    5. # Python全栈课件视频教程:www.dqu.cc
    6. import smtplib
    7. from email.mime.text import MIMEText
    8. from email.mime.multipart import MIMEMultipart
    9. from email.mime.base import MIMEBase
    10. from email import encoders
    11. import os
    12. from email.header import Header
    13. class EmailSender:
    14. def __init__(self, sender_email, sender_password, smtp_server, smtp_port, sender_name=None):
    15. self.sender_email = sender_email
    16. self.sender_password = sender_password
    17. self.smtp_server = smtp_server
    18. self.smtp_port = smtp_port
    19. self.sender_name = sender_name # 添加这一行
    20. def send_email(self, receiver_email, subject, message, attachment_path=None, smtp_port=None):
    21. msg = MIMEMultipart()
    22. sender_header = Header(self.sender_name, 'utf-8') if self.sender_name else self.sender_email
    23. msg['From'] = sender_header
    24. msg['To'] = receiver_email
    25. msg['Subject'] = subject
    26. msg.attach(MIMEText(message, 'plain'))
    27. if attachment_path and os.path.exists(attachment_path):
    28. attachment = open(attachment_path, 'rb')
    29. part = MIMEBase('application', 'octet-stream')
    30. part.set_payload(attachment.read())
    31. encoders.encode_base64(part)
    32. part.add_header('Content-Disposition', f'attachment; filename= {os.path.basename(attachment_path)}')
    33. msg.attach(part)
    34. try:
    35. with smtplib.SMTP(self.smtp_server, self.smtp_port if not smtp_port else smtp_port) as server:
    36. server.starttls()
    37. server.login(self.sender_email, self.sender_password)
    38. server.sendmail(self.sender_email, receiver_email, msg.as_string())
    39. print("邮件发送成功!")
    40. except smtplib.SMTPException as e:
    41. print(f"发送邮件时出现错误:{e}")
    42. # 测试调用
    43. def main():
    44. sender_email = '你的邮箱地址' # 发送者邮箱
    45. sender_password = '你的邮箱密码' # smtp密码或者自建邮箱的邮箱密码
    46. smtp_server = 'smtp.example.com' # 邮箱服务器地址
    47. smtp_port = 587 # 根据你的邮箱服务商选择合适的端口,例如Gmail是587,QQ邮箱是465(SSL)或587(STARTTLS)
    48. sender_name = '你的名字' # 可选,发件人名字
    49. email_sender = EmailSender(sender_email, sender_password, smtp_server, smtp_port, sender_name=sender_name)
    50. email_sender.send_email('接收者邮箱地址', '邮件主题', '邮件内容', attachment_path='/path/to/attachment.txt')
    51. if __name__ == '__main__':
    52. main()
    1. 你需要将sender_emailsender_passwordsmtp_serversmtp_portsender_name替换为实际的值。
    2. 你需要将receiver_emailattachment_path替换为实际的接收者邮箱地址和附件路径(如果你想添加附件的话)。
    3. 根据你的邮箱服务商,smtp_port可能需要更改。例如,Gmail使用587端口,而QQ邮箱可以使用465(SSL)或587(STARTTLS)端口。
    4. 某些邮箱服务商可能需要你在账户设置中开启“不够安全的应用”的访问权限,或者使用应用专用密码(而非你的邮箱密码)作为sender_password
    5. 在真实环境中,不建议在代码中硬编码敏感信息(如邮箱密码),而应使用
  • 相关阅读:
    Flow深入浅出系列之使用Kotlin Flow自动刷新Android数据的策略
    观察者模式-C++
    react配置 axios
    软件测试之单元测试自动化入门基础
    Python 正则表达式转义
    微头条项目实战:新增RequestHeader注解
    基于SSM的化妆品购物商城/美妆销售系统
    GlobalMapper渲染DEM导出背景透明
    蓝桥等考Python组别一级008
    最受欢迎的 Linux 怎么是它,Ubuntu 排第六
  • 原文地址:https://blog.csdn.net/bbos2004/article/details/136461114