Я написал и запускаю небольшую программу, которая автоматизирует некоторые серверные вещи для меня, а затем готовит отчет в виде электронной таблицы и отправляет электронное письмо с результатами отчета.
В любом случае, когда я запускаю эту программу наWindows-машина, отчет отправляет просто отлично с вложением, являющимся файлом 'xlsx' (как я хочу).Когда я запускаю эту программу на своем сервере Ubuntu, электронная почта и вложение отправляются просто отлично, но вложение не имеет расширения.Я могу добавить расширение «xlsx», когда я загружаю вложение, и когда я это делаю, файл открывается просто как электронная таблица.
Вот мой код вложения, чтобы создать электронное письмо и отправить его.Я считаю, что ошибка здесь.Что я могу сделать, чтобы у моего вложения электронной почты было расширение «xlsx» при отправке с моего сервера Ubuntu?Заранее спасибо.
def prepEmailWithAttachment(self,
subject,
body,
attachment_path,
from_address = mFrom_address,
to_address = mTo_address):
'''preps email with attachment'''
msg = MIMEMultipart()
msg["From"] = from_address
msg["To"] = to_address
msg["Subject"] = subject
#make email body readable if it is not already a string
if not isinstance(body, str): body = body.decode("utf-8")
msg.attach(MIMEText(body, "plain"))
#attach attachment
filename = "HITS"
part = MIMEBase("application", "xlsx")
part.set_payload(open(attachment_path, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % filename)
msg.attach(part)
return msg
def sendEmailWithAttachment(self, message):
'''sends email with attachment'''
#server setup
server = smtplib.SMTP("<my server goes here>", 587)
server.starttls() #everything after this is encrypted
server.login("<my email goes here>", <my password goes here>)
#send message
server.sendmail(self.getFromAddress(),
self.getToAddress(),
message.as_string())
#server shutdown
server.quit()