北京云衔科技有限公司(简称“云衔科技”)是一家专注于企业数字化广告营销解决方案的服务商。

  • 商务电话
    17810254487
  • 联系邮箱
    sales@cloudxian.cn

用exchangelib发送邮件

云衔科技是一家专注于数字化营销解决方案和SaaS软件服务的领先企业。公司凭借深厚的行业经验和专业技术能力,致力于为企业客户提供全方位、高效的数字广告代理与运营服务,以及定制化的SaaS软件解决方案。

发送邮件

宁可十年不将军,不可一日不拱卒。持续的慢才是真的快!

—— 佚名

是一个用于操作 邮箱的第三方库,其接口设计简单易用,常用功能如下:

抢先一览

下面这个例子仅用若干行代码便实现了打印输出收件箱前 100 封邮件:

1
2
3
4
5
6
7

from exchangelib import Credentials, Account
credentials = Credentials('john@example.com', 'topsecret')
account = Account('john@example.com', credentials=credentials, autodiscover=True)
for item in account.inbox.all().order_by('-datetime_received')[:100]:
        print(item.subject, item.sender, item.datetime_received)

将邮箱账号和密码传给 之后,即可通过简单的函数调用完成各种不可以思议的操作!

安装

开始使用 之前,你需要先装好它。推荐从 PYPI 安装:

1

$ pip install exchangelib

默认的安装版本不支持 。 如果实在需要 ,可以安装带 依赖的版本:

1

$ pip install exchangelib[kerberos]

想要安装最新的代码,则可以直接从 安装:

$ pip install git+https://github.com/ecederstrand/exchangelib.git

最新的代码可能不太稳定,在生产中使用需要谨慎测试验证。

此外,由于 用到 lxml 包以及用以支持 认证的 包, 你可能需要装一些额外的系统包,具体方法因操作系统而异。

对于 系列系统:

1
2
3
4

$ apt-get install libxml2-dev libxslt1-dev
$ # For Kerberos support, also install these:
% apt-get install libkrb5-dev build-essential libssl-dev libffi-dev python-dev

对于 系列系统:

1
2

$ # For Kerberos support, install these:
$ yum install gcc python-devel krb5-devel krb5-workstation python-devel

发送邮件

发送邮件只需初始化 对象并调用 send 方法即可:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

from exchangelib import Message
message = Message(
    account=account,
    subject='测试主题',
    body='这是一封测试邮件',
    to_recipients=(
        'jim@example.com',
    ),
)
message.send()

其中, 参数是账号授权信息,抢先一览小节已介绍过; 为邮件主题; body 为邮件体; 指定收件人列表。

抄送、密送

抄送 收件人列表通过 参数指定:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

message = Message(

用exchangelib发送邮件

account=account, subject='测试主题', body='这是一封测试邮件', to_recipients=( 'jim@example.com', ), cc_recipients=( 'another-one@example.com', ), )

类似地, 密送 收件人通过 参数指定:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

message = Message(
    account=account,
    subject='测试主题',
    body='这是一封测试邮件',
    to_recipients=(
        'jim@example.com',
    ),
    bcc_recipients=(
        'another-one@example.com',
    ),
)

HTML邮件

邮件一般不局限于纯文本,可以用 HTML 编写格式丰富的内容:

from exchangelib import HTMLBody
html = 'Hello happy OWA user!'
message = Message(
    account=account,
    subject='测试主题',
    body=HTMLBody(html),
    to_recipients=(
        'jim@example.com',
    ),
)

发送附件

发送附件需要初始化 对象,指定文件名以及文件内容, 并通过 对象 方法附着到邮件上:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

from exchangelib import FileAttachment
logo_filename = 'logo.png'
with open(logo_filename, 'rb') as f:
    logo = FileAttachment(
        filename=logo_filename,
        content=f.read(),
    )
message.attach(logo)
message.send()

内嵌附件图片

附件图片可以嵌到 HTML 邮件体中进行展示。 此时,需要为附件指定一个 CID ,以便在 HTML 中引用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

logo_filename = 'logo.png'
with open(logo_filename, 'rb') as f:
    logo = FileAttachment(
        filename=logo_filename,
        content=f.read(),
        content_id=logo_filename,
    )
message.attach(logo)
message.body = HTMLBody('Hello logo: %s">' % (logo_filename,))
message.send()

【小菜学】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学】系列文章首发于公众号【小菜学编程】,敬请关注:

邮件群发-邮件群发软件|邮件批量发送工具|群发邮件平台|批量邮箱发送系统公司
« 上一篇 2024年 12月 20日 上午9:39
邮件发送失败原因服务器连接超时,我在发送邮件时经常出现发送失败或是连接超时的情况?
下一篇 » 2024年 12月 20日 上午9:39