本文目录导读:

是的,可以通过脚本批量发送SMTP邮件,下面我提供几种常见的实现方式:
Python脚本(最灵活)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import csv
def send_bulk_emails(smtp_server, port, username, password, csv_file):
# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, port)
server.starttls()
server.login(username, password)
# 读取CSV文件(每行:email, subject, content)
with open(csv_file, 'r') as f:
reader = csv.reader(f)
for row in reader:
to_email, subject, content = row
msg = MIMEMultipart()
msg['From'] = username
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(content, 'plain'))
try:
server.sendmail(username, [to_email], msg.as_string())
print(f"✓ 已发送到 {to_email}")
except Exception as e:
print(f"✗ 发送失败 {to_email}: {e}")
server.quit()
# 使用示例
send_bulk_emails(
"smtp.gmail.com", 587,
"your_email@gmail.com",
"your_app_password", # Gmail需要应用专用密码
"recipients.csv"
)
Bash脚本(Linux/Unix)
#!/bin/bash
# 发送批量邮件
while IFS=',' read -r email subject content
do
echo -e "Subject: $subject\n\n$content" | \
sendmail -v "$email"
echo "已发送到:$email"
done < emails.csv
# 使用 ssmtp
while IFS=',' read -r email subject content
do
cat << EOF | ssmtp "$email"
Subject: $subject
To: $email
$content
EOF
echo "已发送到:$email"
done < emails.csv
PowerShell脚本(Windows)
# 批量发送邮件
$smtpServer = "smtp.office365.com"
$smtpPort = 587
$from = "your@domain.com"
$password = "your-password"
$mailList = Import-Csv "recipients.csv"
foreach ($mail in $mailList) {
$params = @{
SmtpServer = $smtpServer
Port = $smtpPort
UseSsl = $true
Credential = New-Object System.Management.Automation.PSCredential($from, (ConvertTo-SecureString $password -AsPlainText -Force))
From = $from
To = $mail.Email
Subject = $mail.Subject
Body = $mail.Content
}
try {
Send-MailMessage @params
Write-Host "✓ 已发送到 $($mail.Email)"
}
catch {
Write-Host "✗ 发送失败 $($mail.Email): $_"
}
}
Node.js脚本
const nodemailer = require('nodemailer');
const fs = require('fs');
// 配置传输器
const transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
auth: {
user: 'your@gmail.com',
pass: 'your-app-password'
}
});
// 读取CSV文件
const csv = require('csv-parser');
const recipients = [];
fs.createReadStream('recipients.csv')
.pipe(csv())
.on('data', (row) => recipients.push(row))
.on('end', async () => {
for (const recipient of recipients) {
try {
await transporter.sendMail({
from: '"发件人" <your@gmail.com>',
to: recipient.email,
subject: recipient.subject,
text: recipient.content
});
console.log(`✓ 已发送到 ${recipient.email}`);
} catch (error) {
console.log(`✗ 发送失败 ${recipient.email}: ${error.message}`);
}
}
});
重要注意事项
⚠️ 使用前必须注意:
- 验证收件人:确保有收件人同意
- 限制发送频率:避免被标记为垃圾邮件
- 使用应用专用密码:Gmail等需要
- 遵守法规:遵循当地反垃圾邮件法律
- 添加退订链接:商业邮件需要
推荐方案:
- 小型批量(<100封):Python脚本
- 中型批量(100-1000封):专业邮件服务API
- 大型批量(>1000封):使用SendGrid/Mailgun等商业服务
需要具体的CSV格式模板或更多定制功能吗?