网页版邮箱如何批量发送收件人、邮件内容、附件各不相同的邮件?
出于安全策略,封了邮箱客户端(如outlook,foxmail等),只能用网页版邮箱,无smtp服务器信息了,邮件内容存入公司服务器,不再有客户端邮件。
以前用OUTLOOK可以实现批量发送邮件,不同收件人,不同邮件内容,不同附件,上线网页版后,不能使用VB代码,降低了工作效率
如何批量发送收件人、邮件内容、附件各不相同的邮件
发邮件可以通过编程语言实现,如python。参考这篇教程:https://blog.csdn.net/qq_40243750/article/details/126032582
问题点:无smtp服务器信息怎么发送邮件
分析思路:这种情况下,只能使用邮件服务的API接口进行邮件的发送,
如果没有API接口,那就没办法发送邮件的途径了.
可以通过前端调用API接口发送
如果没有smtp服务器信息的话,那楼上所说的使用python发送邮件那就发送不了。只能看看某些网页版邮箱是否提供了“群发邮件”功能,可以同时向多个收件人发送相同的邮件。如果针对每个收件人生成不同的邮件内容的话,那就要看看有没有类似邮件模板或邮件合并工具这样的东西来实现。目前我没有找到过。
这个需要有api,前端去调
【Python】邮件批量发送
将需要发送的邮件信息存到excel里面,通过pandas的read_excel方法读取excel里面的信息,然后编写邮件发送的函数,遍历excel里面的数据项进行邮件发送
from openpyxl import Workbook
import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
#读取excel
ex_data = pd.read_excel('D:/Python/program/EmailSend/email-config.xlsx',usecols=['收方邮箱','邮件标题','邮件内容','附件名称','附件路径'])
#生成excel
workbook = Workbook()
sheet = workbook.active
sheet.title = 'emails' #sheet页名称
# 插入标题
sheet.append(['收方邮箱','邮件标题','邮件内容','附件名称','附件路径'])
#发送邮箱的账号
sender = 'XXXXXX@qq.com'
#发送邮箱的授权码
pw = '**********'
smtp=smtplib.SMTP_SSL('smtp.qq.com',465) #发送服务器及端口smtp
loginRes = smtp.login(sender, pw) #登录邮箱
#计数器 suCnt,erCnt
suCnt = 0 #成功次数
erCnt = 0 #失败次数
def send(receiver,title,content,filename,filepath):
#创建一个带附件的实例
message = MIMEMultipart()
erro_list = [] #创建列表存储错误信息
message['From'] = Header(sender,'utf-8') #发送人
message['To'] = Header(receiver,'utf-8') #收件人
message['Subject'] = Header(title,'utf-8') #标题
#邮件正文内容,如果正文内容没有的话会报错,所以这里做了异常处理
try:
message.attach(MIMEText(content, 'plain', 'utf-8'))
except:
message.attach(MIMEText('', 'plain', 'utf-8'))
# 构造附件,本来想用if判断,如果有附件内容再执行的,但后面报错没想好咋处理,所以先用异常处理
try:
file = filepath + filename
att = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att.add_header('content-disposition', 'attachment', filename=('gbk', '', filename))
message.attach(att)
except:
nofiles = 0 #这句没用
try:
smtp.sendmail(sender,receiver,message.as_string()) #参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
print(receiver,'邮件发送成功')
global suCnt
suCnt += 1
except smtplib.SMTPException:
erro_list.append(receiver)
erro_list.append(title)
erro_list.append(content)
erro_list.append(filename)
erro_list.append(filepath)
sheet.append(erro_list)
global erCnt
erCnt += 1
#发送邮件
for i in ex_data.values:
send(i[0],i[1],i[2],i[3],i[4])
time.sleep(3) #由于QQ邮箱短时间内发送超过10封邮件后IP会受限,所以这里加了延时发送
smtp.quit() # 发送完毕后退出smtp
#将失败数据保存到excel
workbook.save('erro.xlsx')
print('成功发送:',suCnt,'条;','失败:',erCnt,'条,失败数据已输出到erro.xlsx')
如果你只能使用网页版邮箱,并且无法使用客户端或SMTP服务器,那么你可以考虑使用邮件合并的方式来实现批量发送收件人、邮件内容和附件各不相同的邮件。以下是一种可能的解决方案:
准备好收件人列表:将所有收件人的邮箱地址整理成一个列表,保存在一个文件中,例如Excel或CSV文件。
准备好邮件内容和附件:将每封邮件的内容和附件保存在一个文件中,可以是HTML格式的邮件正文和附件的文件路径。
创建一个邮件模板:在网页版邮箱中,创建一个邮件模板,包含邮件的主题和一些通用的内容。在模板中,你可以使用特定的标记或占位符来表示收件人、邮件内容和附件的位置。
编写脚本或程序:使用编程语言(如Python、JavaScript等)编写一个脚本或程序,读取收件人列表和邮件内容文件,并根据模板生成每封邮件的具体内容。在生成邮件时,将收件人、邮件内容和附件的信息插入到模板中相应的位置。
登录网页版邮箱:使用脚本或程序模拟登录网页版邮箱,并自动填写收件人、主题和邮件内容。
批量发送邮件:使用脚本或程序循环发送每封邮件,将生成的邮件内容发送给相应的收件人。
希望这些信息对你有所帮助!如果你有其他问题,我会尽力回答。
参考newbing
如果你只能使用网页版邮箱来发送批量邮件,并且每封邮件的收件人、邮件内容和附件都不相同,你可以考虑使用 Python 的第三方库来实现这个功能。下面是一个使用 smtplib
和 email
库来发送批量邮件的示例代码:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 邮件服务器的地址和端口
SMTP_SERVER = 'smtp.example.com'
SMTP_PORT = 587
# 发件人的邮箱地址和密码
SENDER_EMAIL = 'sender@example.com'
SENDER_PASSWORD = 'password'
# 收件人列表、邮件内容和附件列表
recipients = ['recipient1@example.com', 'recipient2@example.com', 'recipient3@example.com']
message_texts = ['Message 1', 'Message 2', 'Message 3']
attachments = ['file1.txt', 'file2.txt', 'file3.txt']
# 连接到邮件服务器
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(SENDER_EMAIL, SENDER_PASSWORD)
# 发送邮件
for recipient, message_text, attachment in zip(recipients, message_texts, attachments):
# 创建邮件对象
message = MIMEMultipart()
message['From'] = SENDER_EMAIL
message['To'] = recipient
message['Subject'] = 'Your Subject'
# 添加邮件正文
message.attach(MIMEText(message_text, 'plain'))
# 添加附件
with open(attachment, 'rb') as file:
attachment_part = MIMEApplication(file.read(), Name=attachment)
attachment_part['Content-Disposition'] = f'attachment; filename="{attachment}"'
message.attach(attachment_part)
# 发送邮件
server.send_message(message)
# 断开与邮件服务器的连接
server.quit()
在上面的代码中,你需要替换以下信息:
SMTP_SERVER
和 SMTP_PORT
:你的邮件服务器的地址和端口。SENDER_EMAIL
和 SENDER_PASSWORD
:发件人的邮箱地址和密码。recipients
:收件人的邮箱地址列表。message_texts
:每封邮件的内容列表。attachments
:每封邮件的附件列表。你可以根据需要修改邮件的主题、正文格式等。
这段代码会依次发送每封邮件,每封邮件的收件人、邮件内容和附件都可以是不同的。你可以将这段代码保存为一个 Python 脚本,然后在服务器上运行它来发送批量邮件。
请注意,在使用这段代码之前,你需要确保你的服务器上已经安装了 Python 和相关的库(smtplib
和 email
)。如果没有安装,你可以使用 pip
命令来安装它们。
在使用网页版邮箱进行批量发送个性化的邮件时,通常有几种方法可以实现:
1. 使用邮件合并功能:一些网页版邮箱提供了邮件合并或群发功能,可以通过导入收件人列表、设置邮件模板和附件等方式,批量发送个性化邮件。您可以根据需求,在邮件模板中插入变量,如收件人姓名、内容等,使每封邮件都具有不同的收件人、邮件内容和附件。
2. 使用电子表格和邮件合并:将收件人列表、邮箱、邮件内容和附件等信息整理到电子表格中(如CSV文件),然后使用电子表格软件中的邮件合并功能,将每行数据与邮件模板进行合并生成个性化邮件,并自动发送。
3. 使用邮件API:如果网页版邮箱不支持邮件合并功能,您可以考虑使用第三方邮件API。这些API提供了发送邮件的接口,您可以编写代码来实现批量发送个性化邮件。您可以在代码中循环遍历收件人列表,设置每封邮件的收件人、邮件内容和附件。
无论选择哪种方法,模站无忧提醒您遵守相关的法律法规和邮件发送的规定,尤其要注意垃圾邮件和隐私政策的问题。另外,为了确保安全性,确保服务器和数据存储的安全措施已经采取,并合规处理个人信息。