Python发送带HTML、图片和附件的邮件完整代码示例

6 下载量 58 浏览量 更新于2024-08-30 收藏 48KB PDF 举报
该资源提供了一个使用Python发送邮件的实例代码,支持HTML格式、嵌入图片和添加附件。代码中使用了Python的`email`、`mimetypes`、`smtplib`库来实现这一功能。 在Python中,发送邮件通常涉及到以下几个关键步骤和知识点: 1. **导入必要的模块**: - `email`: 这个模块包含了处理电子邮件消息的类和函数。 - `mimetypes`: 用于识别文件的MIME类型。 - `MIMEMultipart`: 处理多部分消息,如包含文本、HTML和附件。 - `MIMEText`: 用于创建纯文本或HTML邮件。 - `MIMEImage`: 用于创建内联图片。 - `smtplib`: 提供了SMTP(Simple Mail Transfer Protocol)协议的客户端接口,用于发送邮件。 2. **定义`sendEmail`函数**: - 函数接受几个参数,包括认证信息(如服务器、用户名、密码)、发件人地址、收件人地址列表、主题、纯文本内容和HTML内容。 - 在函数中,首先检查登录信息是否完整,如果不完整则退出。 - 创建一个`MIMEMultipart`对象`msgRoot`作为根容器,设置邮件的主题、发件人和收件人。 3. **创建多部分消息**: - 使用`MIMEMultipart('related')`创建一个关联的多部分消息,这样可以将HTML和图片关联起来。 - 再创建一个`MIMEMultipart('alternative')`对象`msgAlternative`,它将包含纯文本和HTML版本的邮件内容,以便接收者可以选择他们支持的格式。 4. **添加纯文本和HTML内容**: - 使用`MIMEText`分别创建纯文本和HTML版本的邮件内容,并将其附加到`msgAlternative`中。 - `MIMEText`的第三个参数指定了编码方式,这里是`utf-8`以支持中文字符。 5. **处理图片**: - 如果邮件中需要内联显示图片,可以使用`MIMEImage`创建MIME图像对象,并将其附加到`msgRoot`中。 - 需要注意正确设置图片的`Content-ID`,以便在HTML中引用。 6. **添加附件**: - 对于其他类型的附件,如文档或音频文件,可以使用`MIMEBase`或专门处理特定类型的子类(如`MIMEApplication`、`MIMEAudio`、`MIMEImage`、`MIMEVideo`等)来创建MIME对象,然后附加到`msgRoot`。 - 设置附件的`Content-Type`、`Content-Disposition`等属性。 7. **连接SMTP服务器并发送邮件**: - 使用`smtplib.SMTP`建立与SMTP服务器的连接。 - 调用`login`方法进行身份验证,然后使用`sendmail`方法发送邮件。 - 最后,调用`quit`方法关闭连接。 这个示例代码提供了构建复杂邮件的基本结构,可以作为实际项目中发送带有多媒体内容邮件的起点。通过扩展此代码,可以添加错误处理、支持多个附件、动态生成HTML内容等功能。