使用

本文档旨在演示如何使用 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_fileyagmail.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

其中一些——即 tocontents -有一些与之相关的魔法,这些魔法将在下面的章节中概述。

电子邮件收件人

只需传递一个带有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 .