整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

进阶Python邮件发送(三)-HTML邮件与附件

亲爱的读者,我们已经成功地发送了简单的文本邮件。但在实际应用中,我们可能还需要发送格式更加丰富的HTML邮件,或者包含附件的邮件。今天,我们就来探索如何使用Python来构建并发送这样的邮件。

一、发送HTML邮件

HTML邮件可以让你的邮件内容更加丰富多彩,包含图片、链接、样式等。在Python中,我们同样可以使用email模块来构建HTML邮件。

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

# HTML邮件正文内容
html_content = """
<html>
<head></head>
<body>
    <h1>Hello, this is an HTML email from Python!</h1>
    <p>Here's a <a href="https://www.python.org">link to Python's website</a>.</p>
    <img src="cid:image1">  <!-- 注意:这里使用了cid引用,稍后我们将添加图片附件 -->
</body>
</html>
"""

# 创建一个多部分邮件对象
msg = MIMEMultipart('related')
msg['From'] = 'your_email@gmail.com'
msg['To'] = 'receiver_email@example.com'
msg['Subject'] = 'HTML Email with Python'

# 添加HTML邮件正文
msg_alternative = MIMEMultipart('alternative')
msg.attach(msg_alternative)
html_part = MIMEText(html_content, 'html', 'utf-8')
msg_alternative.attach(html_part)

# (可选)添加图片附件(这里仅为示例,实际发送时请确保图片文件存在)
# 注意:由于示例中HTML中引用了图片,我们需要在邮件中添加这个图片作为附件,并使用cid引用
# 这里为了简化,我们略过实际文件读取和添加的过程,仅展示逻辑
# ... 添加图片附件的代码会涉及到打开文件、读取内容、创建MIMEImage对象,并设置Content-ID为"image1"

# 发送邮件(假设SMTP连接和登录已经完成)
# ... 使用smtplib发送msg对象,与之前的示例类似

注意:上面的代码示例中,关于添加图片附件的部分被省略了,因为它涉及到文件I/O操作和MIMEImage对象的使用,这可能会让示例变得复杂。在实际应用中,你需要读取图片文件,创建MIMEImage对象,并将其附加到邮件中,同时确保HTML中的<img>标签通过cid属性正确引用该图片。

二、发送带附件的邮件

发送带附件的邮件与发送HTML邮件类似,但你需要创建一个多部分邮件(MIMEMultipart),并为每个部分(文本、HTML、附件等)设置不同的MIME类型。

from email.mime.base import MIMEBase
from email import encoders

# 假设我们要发送一个名为"example.txt"的文本文件作为附件
filename = 'example.txt'

# 读取文件内容并编码为base64
with open(filename, 'rb') as attachment:
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
encoders.encode_base64(part)

# 添加文件头信息
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

# 将附件添加到邮件中
msg.attach(part)

# 现在,msg对象包含了文本(或HTML)和附件,你可以使用smtplib发送它
# ... 发送邮件的代码与之前相同

结语

恭喜你,现在你已经掌握了使用Python发送文本邮件、HTML邮件以及带附件邮件的技能!这些技能将帮助你在自动化任务、通知系统或任何需要邮件通信的应用程序中大展拳脚。记得在实践中不断探索和尝试,你会发现Python在邮件处理方面的更多可能性。

. HTML是一种标记语言,它是由(C)解释执行的

A.不需要解释

B.Windows

C.浏览器

D.标记语言处理软件

2.在HTML文档中用于表示页面标题的标记对是(D)

A. <head></head>

B. <header></header>

C. <caption> </caption>

D. <title></title>

3.在HTML文档中用于表示表格的标记对是(C)

A. <head></head>

B.<header></header>

C. <table></table>

D.<caption></caption>

4.在HTML文档中使用的注释符号是(C )。

A. //...

B. /* ....*/

C.<! --.......-->

D.以上都不是

5.为了标识一个HTML文件,应该使用的HTML标记是(C )。

A. <p></p>

B. <head></head>

C. <html></html>

D.<form></form>

6.在下列的HTML中,最大的标题是(D)

A. <h6>

B. <head>

C.<heading>

D.<h1>

7.在HTML中要定义一一个书签,应该使用的语句是(B ) 。

A. <a href="#object_01">text</a>

B. <a name="object _01">text</a>

C. <a target="#object_01">text</a>

D. <a link="#object_ 01" >text</a>

8. 如果要在表单中创建一个普通文本框,下列标记中正确的是( A )。

A. <input type="text" >

B. <input type ="password" >

C. <input type="checkbox" >

D. <input type ="radio" >

9. 下列标记中不属于行内元素的是( D)。

A. <em>

B. <font>

C. <input>

D. <div>

10.下列标记中可以产生粗体字的HTML标记是( C)。

A. <bold>

B. <bb>

C. <b>

D. <i>

11.在下列的HTML中,正确产生超链接的标记是(B)。

A. <a url="http://www. sina. com. cn">新浪网</a>

B. <a href="http://www. sina. com. cn">新浪网</a>

C. <a>http://www. sina. com. cn</a>

D. <a name=" http://www. sina. com. cn" >新浪网</a>

12.以下语句中,正确制作电子邮件链接的是(C)。

A. <a href="xxx@ yyy">

B. <mail href="xxx@ yyy" >

C. <a href="mailto:xxx@ yyy">

D. <mail>xxx@ yyy</ mail>

13.以下选项中,全部都是表格标记的是( B )。

A. <table> <head><tfoot>

B. <table><tr><td>

C. <table><tr><tt>

D. <thead> <body><tr>

14.下列语句中,能产生带有数字列表符号的列表标记是(C)。

A. <ul>

B. <dl>

C. <ol>

D. <list>

15.在下列选项中,正确地产生文本区( textarea)的标记是(A ) 。

A . <textarea>

B. <input type =”textarea" >

C. <input type =”textbox" >

D. <input type="text:">

计算机二级Web(3):HTML语言基础 (下)

计算机二级Web(3):HTML语言基础 (上)