python 群发邮件 亲测可用

1.先开通邮件的POP3/SMTP/IMAP,拿到授权密码,注意,不是邮箱密码

 

2.相关代码,里面涉及到的数据库和邮件,都是相对路径下的,可根据代码自行创建和维护

#!pip install PyEmail
import smtplib # smtp 简单邮件传输协议
from email.mime.text import MIMEText
from email.header import Header
import pandas as pd
from email.mime.multipart import MIMEMultipart




mail_host = 'smtp.163.com'  # SMTP服务器IP,如果是163,可能是smtp.163.com
mail_user = 'xxxxx@163.com'  # 用户名
mail_pass = '******'   # 密码 授权密码,非邮箱密码

sender = 'xxxx@163.com'  # 发件人邮箱与mail_user要一致





# 定义发送邮件函数,参数为邮箱联系人分组
def SendMail(group):
    data = group.reset_index(drop=True)
    receiver = data.loc[0,'邮箱'] #收件人从dataframe取
    Excels = data['公司'].to_list()
    
    #创建一个带附件的邮件实例
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = receiver
    msg['Subject'] = Header('成本会计一课', 'utf-8')
    
    #邮件正文内容
    msg.attach(MIMEText('hello everybody……', 'plain', 'utf-8'))
    
    # 构造附件
    for file in Excels:
        msg_xlsx = MIMEText(open(r'邮件集合/'+file+'.xlsx', 'rb').read(), 'base64', 'utf-8')
        msg_xlsx.add_header('Content-Disposition', 'attachment', filename=file+'.xlsx') 
        msg.attach(msg_xlsx)
    
    #发送邮件
    try:
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)  #465 是SMTP 端口号
        smtpObj.login(mail_user, mail_pass)  
        smtpObj.sendmail(sender, receiver, msg.as_string())
        print('邮件发送成功:'+receiver)
    except smtplib.SMTPException:
        print('Error: 无法发送邮件receiver:'+receiver)
        
        
        
        

# 使用函数
df1 = pd.read_excel('公司与邮箱数据.xlsx', sheet_name=0,converters = {'公司': str}) 
df1.groupby(['邮箱'], as_index=False).apply(SendMail)


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦l

你的鼓励实我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值