第十七章 Python_发送邮件

一、开通邮箱SMTP服务,并获取 授权码

这个账户是你要使用此邮箱发送邮件的账户,密码不是平时登录邮箱的密码,而是开通 POP3/SMTP 功能后设置的客户端授权密码。

这里以 126 邮箱为例:

image
image
image

二、基本语法

import yagmail
yag = yagmail.SMTP(
            user='自己的账号',
            password='账号的授权码',
            host='smtp.qq.com',  # 邮局的 smtp 地址
            port='端口号',       # 邮局的 smtp 端口
            smtp_ssl=False)

yag.send(to='收件箱账号',
         subject='邮件主题',
         contents='邮件内容')

三、发送文本

下面是以我的 126 邮箱为例, 使用系统密钥环的方式,向我的 163邮箱发送了一封邮件。

import yagmail

# 这个要刚才已经成功开通 SMTP 的邮箱账号
email_user = '[email protected]'

# 这个必须是客户端授权码,不是登录密码
email_pwd  = 'yourpassword'

# 这个可以从邮件服务提供商获取
email_host = 'smtp.126.com'

# 邮件正文
email_content = """你不是我喜欢的那种人

却慢慢变成

我喜欢的那个人"""

yag = yagmail.SMTP(user=email_user,
                   password=email_pwd,
                   host=email_host,
                   port=25,
                   smtp_ssl=False)
yag.send(to='[email protected]',
         subject='告白气球',
         contents=email_content)

这样就愉快的发送了一封测试邮件到 [email protected] 的邮箱。

image

四、发送附件

image

报错上面的图片到本地,作为测试之用。

这里保存的名称是 告白气球.jpg

发送附件可以使用 attachments 关键字参数,它的值可以是一个具体的有效路径,也可以是包含有效路径的列表。

import yagmail

email_user = '[email protected]'
email_pwd  ='yourpassword'
email_host = 'smtp.126.com'

email_content = """你不讲真心话
我却在大冒险"""

email_image = "./拥抱.jgp"

yag = yagmail.SMTP(user=email_user,
                   password=email_pwd,
                   host=email_host,
                   port=25,
                   smtp_ssl=False)
yag.send(to='[email protected]',
         subject='告白气球',
         contents=email_content,
         attachments=email_image
)

邮件收到显示:

有的时候,发送的邮件会被识别为垃圾邮件^_^

image

最简单的还是放在 contents 中。比如:

contents=[email_content, email_image]

在这个列表中,假如是有效的路径,就会作为附件发送,假如不是有效路径,就会作为普通文字发送。

image

五、发送给多个收件人

给多个人发送是,只需要把关键字参数 to 的值改成列表即可,列表中放入需要通知的人的邮箱地址。

email_users=["[email protected]", "[email protected]"]

to=email_users


六、加密邮件内容

希望加密邮件内容,也很简单。

大部分运营上提供的加密邮件接收的端口是 465

import yagmail

email_user = '[email protected]'
email_pwd  = 'yourpassword'
email_host = 'smtp.126.com'

email_content = """你不讲真心话
我却在大冒险"""

yag = yagmail.SMTP(user=email_user,
                   password=email_pwd,
                   host=email_host,
                   port=465,
                   smtp_ssl=True)
yag.send(to='[email protected]',
         subject='告白气球',
         contents=email_content
)

其实 smtp_ssl=True 这个参数不传也行,因为默认的就是 True

image

你可能感兴趣的:(第十七章 Python_发送邮件)