第2章 2.5 发送邮件通知

一、发送邮件通知代码:

import argparse
import configparser

import smtplib
from email.message import EmailMessage

def main(to_email, server, port, from_email, password):
    print(f'With love, from {from_email} to {to_email}')

    # Create the message
    subject = 'With love, from ME to YOU'
    text = '''This is an example test '''
    msg = EmailMessage()
    msg.set_content(text)
    msg['Subject'] = subject
    msg['From'] = from_email
    msg['To'] = to_email

    # Open communication and send
    server = smtplib.SMTP_SSL(server, port)
    server.login(from_email, password)
    server.send_message(msg)
    server.quit()

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('email', type=str, help='destination email')
    parser.add_argument('-c', dest='config', type=argparse.FileType('r'),
                        help='config file', default=None)

    args = parser.parse_args()
    if not args.config:
        print('Error, a config file is required')
        parser.print_help()
        exit(1)

    config = configparser.ConfigParser()
    config.read_file(args.config)

    main(args.email, 
        server=config['DEFAULT']['server'],
        port=config['DEFAULT']['port'],
        from_email=config['DEFAULT']['email'],
        password=config['DEFAULT']['password'])

  

(.venv) huangsiyangdeiMac:ch02 huangsiyang$ cat email_conf.ini 

[DEFAULT]

email=******@qq.com

server=smtp.qq.com

port=465

password=******

#将email为自己的邮箱,password修改为邮箱的授权码

(.venv) huangsiyangdeiMac:ch02 huangsiyang$ chmod 600 email_conf.ini 

#修改配置文件的权限

(.venv) huangsiyangdeiMac:ch02 huangsiyang$ python email_task.py -c email_conf.ini **@qq.com

With love, from ******@qq.com to ******@qq.com

收到的邮件内容如下:

 

 

mesage['To'] = ','.join(recipients)可以接收多个收件人,用逗号分隔。

二、发送带附件的邮件:

import argparse
import configparser

import smtplib
from email.message import EmailMessage

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage


def main(to_email, server, port, from_email, password):
    print(f'With love, from {from_email} to {to_email}')

    # Create the message
    subject = 'With love, from ME to YOU'
    text = '''This is an example test '''
    #msg = EmailMessage()
    msg = MIMEMultipart()
    #msg.set_content(text)
    msg['Subject'] = subject
    msg['From'] = from_email
    msg['To'] = to_email

    part1 = MIMEText('some text', 'plain')
    msg.attach(part1)
    with open('2.png', 'r') as image:
        part2 = MIMEImage(image.read())
    msg.attach(part2)

    # Open communication and send
    server = smtplib.SMTP_SSL(server, port)
    server.login(from_email, password)
    server.send_message(msg)
    server.quit()

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('email', type=str, help='destination email')
    parser.add_argument('-c', dest='config', type=argparse.FileType('r'),
                        help='config file', default=None)

    args = parser.parse_args()
    if not args.config:
        print('Error, a config file is required')
        parser.print_help()
        exit(1)

    config = configparser.ConfigParser()
    config.read_file(args.config)

    main(args.email, 
        server=config['DEFAULT']['server'],
        port=config['DEFAULT']['port'],
        from_email=config['DEFAULT']['email'],
        password=config['DEFAULT']['password'])

  

 

 附件本来是一张png图片,但不懂为什么被转换成了一个bin文件。不过将后缀修改为png之后即可查看图片。

 

posted @ 2022-04-11 00:01  轻舞飞洋  阅读(23)  评论(0编辑  收藏  举报