获得邮件列表失败_Python实例:发送邮件操作

274f24a82fb9b5581a0ed8a168edf143.png
来自PythonABC.org
老师的课程很好,但是每个视频都蛮长的,听着听着就有些晕乎,所以根据视频自己整理了一下,以便记录

利用Python来实现邮件的发送、邮件群发、邮件模版发送等功能。

# 导入smtplib模块,设置邮件服务器、协议设置

import smtplib

server = smtplib.SMTP_SSL('smtp.qq.com', 465)
server.login('email@qq.com', 'password')

# 编写简单邮件信息并发送邮件 - 单条纯文本信息-无主题邮件,收到邮件为空

test_msg = 'test message!'
server.sendmail('email@qq.com', 'email@163.com', test_msg)
# server.quit()

# 实现一个正式邮件的编写和方式
# 导入两个新模块 - MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型

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

from_add = 'email@qq.com'
# pass_word = 'password'
to_add = 'email@163.com'
mail_message = MIMEMultipart()
mail_message['From'] = from_add
mail_message['To'] = to_add
mail_message['Subject'] = 'From Python'
body = 'This message from python!'
mail_message.attach(MIMEText(body, 'plain'))
# server.login(from_add, pass_word)
server.send_message(mail_message)
# server.sendmail(from_add, to_add, mail_message.as_string())  # 只能发送纯文本/字符串
# server.quit()

# 发送一个图片文件

from email.mime.image import MIMEImage

mail_message_1 = MIMEMultipart()
mail_message_1['From'] = from_add
mail_message_1['To'] = to_add
mail_message_1['Subject'] = 'Send Image by Python'
body_1 = 'Have a nice day!'
mail_message_1.attach(MIMEText(body_1, 'plain'))
with open('dog.jpeg', 'rb') as fp:
    img = MIMEImage(fp.read())
mail_message_1.attach(img)
# server.login(from_add, pass_word)
server.send_message(mail_message_1)
# server.quit()

# 建立一个群发邮件的邮件地址列表

mail_add_list = ['email@qq.com', 'email@163.com']


# 定义一个发送邮件的函数

def send_mail(to_list, sub, content):
    """
    to_list:群发地址
    sub:邮件主题
    content:邮件内容
    """
    mail_message_2 = MIMEText(content)
    mail_message_2['Subject'] = sub
    mail_message_2['From'] = from_add
    mail_message_2['To'] = ';'.join(to_list)

    try:
        # server.debuglevel(1)  # 记录任何发生的信息
        server.send_message(mail_message_2)
        # server.close()
        return True
    except Exception as e:
        print(e)
        return False


# 编写群发邮件的主函数


if send_mail(mail_add_list, '群发邮件', '试试可不可以'):
    print('发送成功!')
else:
    print('发送失败!')


# 将群发邮件修改为根据不同接收方,个性化群发邮件
# 从文件获取名字和邮箱地址的列表

def get_contacts(filename):
    """
    filename:传入收件人名称及邮箱地址列表文件
    return:收件人名称列表和邮箱地址列表
    """
    names = []
    email_adds = []
    with open(filename, mode='r', encoding='utf-8') as contacts_file:
        for a_contact in contacts_file:
            names.append(a_contact.split()[0])
            email_adds.append(a_contact.split()[1])
    return names, email_adds


# 读取模版文件,需要导入模板库

from string import Template


def read_template(filename):
    """
    filename:读取邮件模版文件
    return:模版对象
    """
    with open(filename, mode='r', encoding='utf-8') as template_file:
        template_file_content = template_file.read()
    return Template(template_file_content)


# 编写发送个性化群发邮件主函数


names, email_adds = get_contacts('add_list.txt')
message_template = read_template('messagetxt.txt')  # 生成一个邮件模版对象
for name, email_add in zip(names, email_adds):
    mail_message_3 = MIMEMultipart()

    # 将名字传入模版邮件中

    body_2 = message_template.safe_substitute(SOMEONE=name.title())
    mail_message_3['From'] = from_add
    mail_message_3['To'] = email_add
    mail_message_3['Subject'] = '考试信息确认(python测试)'
    mail_message_3.attach(MIMEText(body_2, 'plain'))
    server.send_message(mail_message_3)
    del mail_message_3

server.quit()

add_list.txt 为群发邮件提供邮箱地址列表:

张三 email@qq.com
李四 email@163.com

messagetxt.txt 为群发邮件的邮件模版:

${SOMEONE}:
你好!
请你于10月30日前往考试中心确认考试信息!
PMP考试中心
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值