第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之后即可查看图片。

浙公网安备 33010602011771号