stmp端口被封,如何实现网页版邮箱批量发送邮件?

网页版邮箱如何批量发送收件人、邮件内容、附件各不相同的邮件?

出于安全策略,封了邮箱客户端(如outlook,foxmail等),只能用网页版邮箱,无smtp服务器信息了,邮件内容存入公司服务器,不再有客户端邮件。

以前用OUTLOOK可以实现批量发送邮件,不同收件人,不同邮件内容,不同附件,上线网页版后,不能使用VB代码,降低了工作效率

如何批量发送收件人、邮件内容、附件各不相同的邮件

发邮件可以通过编程语言实现,如python。参考这篇教程:https://blog.csdn.net/qq_40243750/article/details/126032582

Python邮件批量发送

问题点:无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服务器,那么你可以考虑使用邮件合并的方式来实现批量发送收件人、邮件内容和附件各不相同的邮件。以下是一种可能的解决方案:

  1. 准备好收件人列表:将所有收件人的邮箱地址整理成一个列表,保存在一个文件中,例如Excel或CSV文件。

  2. 准备好邮件内容和附件:将每封邮件的内容和附件保存在一个文件中,可以是HTML格式的邮件正文和附件的文件路径。

  3. 创建一个邮件模板:在网页版邮箱中,创建一个邮件模板,包含邮件的主题和一些通用的内容。在模板中,你可以使用特定的标记或占位符来表示收件人、邮件内容和附件的位置。

  4. 编写脚本或程序:使用编程语言(如Python、JavaScript等)编写一个脚本或程序,读取收件人列表和邮件内容文件,并根据模板生成每封邮件的具体内容。在生成邮件时,将收件人、邮件内容和附件的信息插入到模板中相应的位置。

  5. 登录网页版邮箱:使用脚本或程序模拟登录网页版邮箱,并自动填写收件人、主题和邮件内容。

  6. 批量发送邮件:使用脚本或程序循环发送每封邮件,将生成的邮件内容发送给相应的收件人。

希望这些信息对你有所帮助!如果你有其他问题,我会尽力回答。

参考newbing
如果你只能使用网页版邮箱来发送批量邮件,并且每封邮件的收件人、邮件内容和附件都不相同,你可以考虑使用 Python 的第三方库来实现这个功能。下面是一个使用 smtplibemail 库来发送批量邮件的示例代码:

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_SERVERSMTP_PORT:你的邮件服务器的地址和端口。
  • SENDER_EMAILSENDER_PASSWORD:发件人的邮箱地址和密码。
  • recipients:收件人的邮箱地址列表。
  • message_texts:每封邮件的内容列表。
  • attachments:每封邮件的附件列表。

你可以根据需要修改邮件的主题、正文格式等。

这段代码会依次发送每封邮件,每封邮件的收件人、邮件内容和附件都可以是不同的。你可以将这段代码保存为一个 Python 脚本,然后在服务器上运行它来发送批量邮件。

请注意,在使用这段代码之前,你需要确保你的服务器上已经安装了 Python 和相关的库(smtplibemail)。如果没有安装,你可以使用 pip 命令来安装它们。

在使用网页版邮箱进行批量发送个性化的邮件时,通常有几种方法可以实现:

1. 使用邮件合并功能:一些网页版邮箱提供了邮件合并或群发功能,可以通过导入收件人列表、设置邮件模板和附件等方式,批量发送个性化邮件。您可以根据需求,在邮件模板中插入变量,如收件人姓名、内容等,使每封邮件都具有不同的收件人、邮件内容和附件。

2. 使用电子表格和邮件合并:将收件人列表、邮箱、邮件内容和附件等信息整理到电子表格中(如CSV文件),然后使用电子表格软件中的邮件合并功能,将每行数据与邮件模板进行合并生成个性化邮件,并自动发送。

3. 使用邮件API:如果网页版邮箱不支持邮件合并功能,您可以考虑使用第三方邮件API。这些API提供了发送邮件的接口,您可以编写代码来实现批量发送个性化邮件。您可以在代码中循环遍历收件人列表,设置每封邮件的收件人、邮件内容和附件。

无论选择哪种方法,模站无忧提醒您遵守相关的法律法规和邮件发送的规定,尤其要注意垃圾邮件和隐私政策的问题。另外,为了确保安全性,确保服务器和数据存储的安全措施已经采取,并合规处理个人信息。