使用¶
本文档旨在演示如何使用 yagmail
在你的节目里。此处显示的大部分内容也可以在 README ,为了完整性,可能会复制某些内容。
启动连接¶
如上所述 配置凭据 ,有三种方法通过实例化初始化连接 yagmail.SMTP
:
1. With Username and Password:
e.g. yagmail.SMTP('mygmailusername', 'mygmailpassword')
This method is not recommended, since you would be storing
the full credentials to your account in your script in plain text.
A better alternative is using keyring
, as described in the
following section:
2.第二步。 使用用户名和密钥环 :注册后 keyring
进入 yagmail
,您可以通过简单地传递用户名来实例化客户端,例如。 yagmail.SMTP('mygmailusername')
.
三。 用钥匙圈和.yagmail :如 Setup 文档中,如果您有 .yagmail
主文件夹中的文件,只包含你的GMail用户名。这样,就可以初始化 yagmail.SMTP
没有任何争论。
4。 带OAuth2 :这可能是最安全的身份验证方法,因为您可以撤消令牌的权限。使用OAuth2凭据初始化(获取这些凭据后,如中所示) Setup ),只需传递 oauth2_file
到 yagmail.SMTP
,例如 yagmail.SMTP('user@gmail.com', oauth2_file='~/oauth2_creds.json')
.
关闭并重新使用连接¶
默认情况下, yagmail.SMTP
会自行清理 在CPython . 这是CPython的实现细节,因此在其他实现(如PyPy)中可能不起作用(见 issue #39 ). 在这种情况下,您可以使用 yagmail.SMTP
具有 with
相反。
或者,可以关闭并重新使用与的连接 yagmail.SMTP.close()
和 yagmail.SMTP.login()
(或) yagmail.SMTP.oauth2_file()
如果您使用的是OAuth2)。
发送电子邮件¶
yagmail.SMTP.send()
是一种相当通用的方法,它允许您或多或少地调整邮件的任何内容。首先,所有参数 yagmail.SMTP.send()
是可选的。如果省略收件人(指定为 to
),您将向自己发送一封电子邮件。
因为使用了 yagmail.SMTP.send()
很明显,它们将简单地列在这里:
to
subject
contents
attachments
cc
bcc
preview_only
headers
其中一些——即 to
和 contents
-有一些与之相关的魔法,这些魔法将在下面的章节中概述。
电子邮件收件人¶
只需传递一个带有GMail用户名的字符串,就可以向单个用户发送电子邮件 (@gmail.com
将自动附加),或添加完整的电子邮件地址:
yag.send(to='mike@gmail.com', contents="Hello, Mike!")
或者,您可以通过将电子邮件地址的列表或元组作为 to
:
yag.send(to=['to@someone.com', 'for@someone.com'], contents="Hello there!")
传递这些电子邮件地址时没有任何别名。如果您希望为电子邮件地址使用别名,请提供表单中映射的字典 {{address: alias}}
例如:
recipients = {
'aliased@mike.com': 'Mike',
'aliased@fred.com': 'Fred'
}
yag.send(to=recipients, contents="Hello, Mike and Fred!")
神奇的 contents
¶
这个 contents
的参数 yagmail.SMTP.send()
会被巧妙的猜测。您可以将包含内容的字符串或元素列表传递给它:
如果是 词典 ,则假定键是内容,值是别名(目前,这只适用于图像)。例如:
contents = [
"Hello Mike! Here is a picture I took last week:",
{'path/to/my/image.png': 'PictureForMike'}
]
如果是 一串 ,则它将首先检查字符串的内容是否可以 作为文件读取 例如在本地
'path/to/my/image.png'
. 要推断这些文件的内容类型,这些文件需要扩展名。如果无法在本地读取,则检查字符串是否为有效的HTML,例如
<h1>This is a big title!</h1>
.如果它也不是有效的HTML,那么它必须是文本,例如
"Hello, Mike!"
.
如果你想 确保字符串被视为文本 并且不应该检查上面描述的任何其他内容,您可以使用 yagmail.raw
一个子类 str
.
如果你愿意 内联图像而不是附加图像 ,你可以使用 yagmail.inline
.
从命令行使用yagmail¶
yagmail
包括一个命令行应用程序,简单地用 yagmail
安装之后。若要查看有关如何使用它的完整参考,请运行 yagmail --help
.