用于与电子邮件客户端交互和发送电子邮件的python实用程序
ctodd-python-lib-email的Python项目详细描述
christopher h.todd的电子邮件python库
ctodd python lib电子邮件项目负责与电子邮件交互。具体来说,它用于从用户帐户读取和发送电子邮件。
该库依赖于python的gmail api包,并包装有自定义/特定异常处理、更简单的交互和更实用的风格,以减少直接处理gmailapi的项目中的代码。
这个库也有关于令牌文件和凭证文件的假设,这可能需要根据用例进行准备工作。
目录
依赖关系
python包
- google api python client==1.7.9
- google-auth-httplib2==0.0.3
- 谷歌认证OAuthlib==0.4.0
- 谷歌认证=1.6.3
- OAuthlib==3.0.2
库
gmail_helpers.py
Gmail助手。
这个库用于与google的gmail应用程序交互。威尔 包括发送电子邮件、拉取电子邮件等。
功能:
def get_gmail_service(gmail_credentials):
"""
Purpose:
Connect to Gmail with credentials file that is locally stored (or
log in) so that you can read/utilize gmail services.
Args:
gmail_credentials (Gmail Credentials Obj): Authenticated Gmail credentials object
that can be used to connect to Gmail
Return:
gmail_service (Gmail Services Obj): A connecteed Gmail service object
"""
def get_gmail_credentials(
gmail_credentials_file="~/.gmail/gmail_credentials.json",
gmail_token_file="~/.gmail/gmail_token.pickle",
):
"""
Purpose:
Create or reauthenticate a token for Gmail services using a credentials file
located on the host or reauthenticate an already existing token
Args:
gmail_credentials_file (String): Filename of the Gmail credentials file
gmail_token_file (String): Filename of the Gmail token file
Return:
gmail_credentials (Gmail Credentials Obj): Authenticated Gmail credentials object
that can be used to connect to Gmail
"""
def generate_gmail_token(gmail_credentials_file):
"""
Purpose:
Create a new gmail token for authentication of services
Args:
gmail_credentials_file (String): Filename of the Gmail credentials file
Return:
gmail_credentials (Gmail Credentials Obj): Authenticated Gmail credentials object
that can be used to connect to Gmail
"""
def send_email(gmail_service, email_msg):
"""
Purpose:
Send email through a gmail server object
Args:
gmail_service (Gmail Service Object): Connected Gmail Service
email_msg (Message Object): Email message to send through Gmail
Return:
N/A
"""
def build_msg_obj(
email_from,
email_subject,
email_body,
email_to,
email_cc=[],
email_bcc=[],
email_attachments=[],
):
"""
Purpose:
Build and encode an email message object to send through a gmail
server
Args:
email_from (String): From address for the email
email_subject (String): Subject of the email
email_body (String): String body of the email
email_to (List of Strings): List of email addresses to add as a TO on email
email_cc (List of Strings): List of email addresses to add as a CC on email.
Defaults to [] (no addresses)
email_bcc (List of Strings): List of email addresses to add as a BCC on email.
Defaults to [] (no addresses)
email_attachments (List of Strings): List of filenames that will be attached
to the email. Defaults to [] (no attachmensts)
Return:
email_msg (Message Object): Encoded email message object ready to be sent
"""
def encode_attachment_for_email(attachment_filename):
"""
Purpose:
Guess the encoding and prepare the attachment for being added to the email
Args:
attachment_filename (String): String filename of the attachment
Returns:
attachment (Encoded Attachment Obj): Encoded Attachment Obj ready to be
added to the email message
"""
脚本示例
用于测试和与库交互的示例可执行python脚本/模块。这些示例显示了库的用例,可以用作与库一起开发的模板,也可以用作一次性开发工作。
send_test_email_with_gmail.py
Purpose:
Send a test email utilizing Gmail
Steps:
- Generate a token
- Connect to Google Service
- Build Message Object
- Send Email
function call:
send_test_email_with_gmail.py [-h]
[--gmail-token-file GMAIL_TOKEN_FILE]
[--gmail-credentials-file GMAIL_CREDENTIALS_FILE]
[--email-cc EMAIL_CC]
[--email-bcc EMAIL_BCC]
[--email-attachements EMAIL_ATTACHEMENTS]
--gmail-account GMAIL_ACCOUNT --email-to
EMAIL_TO --email-subject EMAIL_SUBJECT
--email-body EMAIL_BODY
example call:
python3.6 send_test_email_with_gmail.py \
--gmail-account="gmail_account@gmail.com" \
--email-to="gmail_account_to@gmail.com" \
--email-subject="Test Email" \
--email-body="This is a test email" \
--email-cc="gmail_account_cc1@gmail.com" \
--email-cc="gmail_account_cc2@gmail.com" \
--email-bcc="gmail_account_bcc@gmail.com" \
--email-attachements="/pah/to/file.png" \
--email-attachements="/pah/to/file2.png"
注释
- 依赖于f-string符号,它仅限于python3.6。通过重构删除这些内容,可以使用python3.0.x到3.5.x进行开发
- 仅实现Gmail,不支持其他电子邮件提供商
待办事项
- UnitTest框架已就位,但缺少测试
- 雅虎支持
- Outlook/Hotmail支持