我正在尝试创建一个好的电子邮件批量发件人。我写过这个函数:
def send(server_ip,username,password,recipient,count):
sender = 'prova <' + username +'>'
body = ''.join(tempMail)
body = body.replace('#email#', recipient)
body = body.replace('#random#', rand_string())
subject = "Test smpt sender"
headers = ["From: " + sender, "Subject: " + subject, "To: " + recipient, "MIME-Version: 1.0", "Content-Type: text/html"]
headers = "\r\n".join(headers)
try:
server = smtplib.SMTP(server_ip)
server.login(username,password)
server.sendmail(sender, recipient, headers + "\n\n" + body)
code = server.ehlo()[0]
server.quit()
print "[+] Send to",recipient + " smpt :",server_ip
except:
listSMPT.pop(count)
print "[-] Error send to " + recipient + '\t' + server_ip
但我有一个问题:我发送的所有电子邮件都在电子邮件标题中包含我的IP地址。 我需要一个不使用套接字或代理的解决方案! 是否可以在电子邮件标题中发送没有此数据的电子邮件? 如果我在标头中有SMTP的IP,那就不是问题了,我只需要删除IP到python工作的PC。
答案 0 :(得分:0)
您似乎正在使用远程SMTP服务器来转发您的电子邮件。例如,您将电子邮件提交给另一台服务器,服务器会为您发送电子邮件。
在这种情况下,您在Received:
标题中看到的运行Python脚本的计算机的IP地址将由您的Python脚本连接到的第一个中继服务器添加。
如果您可以控制第一跳中继(例如,它是您运行的Postfix服务器),您可以在服务器上执行一些技巧来删除/审查该标头。