Часть скрипта Python работает по-разному в Windows и Linux - PullRequest
0 голосов
/ 15 октября 2018

Я написал и запускаю небольшую программу, которая автоматизирует некоторые серверные вещи для меня, а затем готовит отчет в виде электронной таблицы и отправляет электронное письмо с результатами отчета.

В любом случае, когда я запускаю эту программу на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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...