Python 如何在发送电子邮件时删除 header?
Python how to remove header when sending an email?
我正在尝试删除 header 部分,目前收到的电子邮件如下所示:
.
我不想在收件人收到邮件时显示它,我不知道如何隐藏它。
我试图删除它,但收到错误消息。该代码包含在内,但在下面被注释掉了。
import donator
import csv
import os
import smtplib
from email.message import EmailMessage
from email.mime.text import MIMEText
def ReadEmailTemplate():
oFile = open('EmailTemplate.txt', 'r')
Subject = oFile.readline()
Body = oFile.read()
return [Subject, Body]
def ReadCSVFile():
with open('ExampleData.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
allDonators = []
for line in csv_reader:
Number = line[0]
Name = line[1]
Amount = line[2]
Date = line[3]
Mode = line[4]
Email = line[5]
allDonators.append(donator.Donator(Number, Name, Amount, Date, Mode, Email))
return allDonators
txt = ReadEmailTemplate()
Subject = txt[0]
Body = txt[1]
# READ VALUES FROM CSV FILE AND RUN THROUGH THEM
allDonators = ReadCSVFile()
# CREATE EMAIL WITH THOSE VALUES
for donator in allDonators:
print(f'Sending email to: {donator.Name} at {donator.Email}...')
msg = EmailMessage()
Body = MIMEText(
Body.replace('REPLACE_DATE', donator.Date).replace('DONATION_AMOUNT', donator.Amount).replace('DONATION_DATE',
donator.Date))
msg.set_content(Body)
msg['From'] = os.environ['PERS_EMAIL']
msg['To'] = donator.Email
msg['Subject'] = Subject.replace('CUSTOMER_NAME', donator.Name)
print(msg.get('Content-Type'))
print(msg.get('Content-Transfer-Encoding'))
print(msg.get('MIME-Version'))
#for hdr in ['Content-Type', 'Content-Transfer-Encoding', 'MIME-Version']:
# del msg[hdr]
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login(os.environ['PERS_EMAIL'], os.environ['PERS_EMAILPW'])
smtp.sendmail(os.environ['PERS_EMAIL'], donator.Email, msg.as_string())
smtplib.SMTP_SSL('smtp.gmail.com', 465).quit()
在ReadEmailTemplate
中,你有Subject = oFile.readline()
。 file.readline()
在行中留下换行符 '\n'
。因此,您的主题行后跟一个空行,它终止了 headers,headers 的其余部分被视为消息。就这样
Subject = oFile.readline().strip()
请注意,您不必拆分 CSV 的字段:
for line in csv_reader:
allDonators.append(donator.Donator(*line))
我正在尝试删除 header 部分,目前收到的电子邮件如下所示:
我不想在收件人收到邮件时显示它,我不知道如何隐藏它。
我试图删除它,但收到错误消息。该代码包含在内,但在下面被注释掉了。
import donator
import csv
import os
import smtplib
from email.message import EmailMessage
from email.mime.text import MIMEText
def ReadEmailTemplate():
oFile = open('EmailTemplate.txt', 'r')
Subject = oFile.readline()
Body = oFile.read()
return [Subject, Body]
def ReadCSVFile():
with open('ExampleData.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
allDonators = []
for line in csv_reader:
Number = line[0]
Name = line[1]
Amount = line[2]
Date = line[3]
Mode = line[4]
Email = line[5]
allDonators.append(donator.Donator(Number, Name, Amount, Date, Mode, Email))
return allDonators
txt = ReadEmailTemplate()
Subject = txt[0]
Body = txt[1]
# READ VALUES FROM CSV FILE AND RUN THROUGH THEM
allDonators = ReadCSVFile()
# CREATE EMAIL WITH THOSE VALUES
for donator in allDonators:
print(f'Sending email to: {donator.Name} at {donator.Email}...')
msg = EmailMessage()
Body = MIMEText(
Body.replace('REPLACE_DATE', donator.Date).replace('DONATION_AMOUNT', donator.Amount).replace('DONATION_DATE',
donator.Date))
msg.set_content(Body)
msg['From'] = os.environ['PERS_EMAIL']
msg['To'] = donator.Email
msg['Subject'] = Subject.replace('CUSTOMER_NAME', donator.Name)
print(msg.get('Content-Type'))
print(msg.get('Content-Transfer-Encoding'))
print(msg.get('MIME-Version'))
#for hdr in ['Content-Type', 'Content-Transfer-Encoding', 'MIME-Version']:
# del msg[hdr]
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login(os.environ['PERS_EMAIL'], os.environ['PERS_EMAILPW'])
smtp.sendmail(os.environ['PERS_EMAIL'], donator.Email, msg.as_string())
smtplib.SMTP_SSL('smtp.gmail.com', 465).quit()
在ReadEmailTemplate
中,你有Subject = oFile.readline()
。 file.readline()
在行中留下换行符 '\n'
。因此,您的主题行后跟一个空行,它终止了 headers,headers 的其余部分被视为消息。就这样
Subject = oFile.readline().strip()
请注意,您不必拆分 CSV 的字段:
for line in csv_reader:
allDonators.append(donator.Donator(*line))