Попытка напечатать тему письма и дату и время в текстовом файле после отправки письма - PullRequest
1 голос
/ 12 апреля 2019

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

def send_email():
    from exchangelib import Credentials, Account, Message, Mailbox, UTC_NOW
    import time

    credentials = Credentials('my@email', 'password')
    account = Account('my@email', credentials=credentials, autodiscover=True)

    m = Message(
                account=account,
                subject='Test Subject',
                body='Test Body',
                to_recipients=[
                    Mailbox(email_address='my@email')
                ])
    text_file = open("Output.txt", "w")
    text_file.write(time.strftime("%H:%M:%S"))
    text_file.close()
    m.send()

send_email()

Как написано в настоящее время, программа отправит электронное письмо (мне для тестирования) и войдет в текстовый файл (Output.txt) текущего времени.Я пытаюсь вывести следующее:

Subject:"Test Subject" Date: 4/12/2019 Time: 13:45:09

* Заменить дату и время на дату и время, когда оно было отправлено.Я начинаю путаться с форматом того, как это сделать, так как я новичок в Python.Можно ли все это сделать и напечатать в одной строке?Или придется печатать на нескольких строках?Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Прежде всего, измените режим записи на a вместо w, так как использование w просто очистит все предыдущее содержимое файла. Используя a, новые данные добавляются в файл. Просто замените свою часть записи следующим:

with open("Output.txt", "a") as f:

Кроме того, чтобы записать данные в вашем формате, сначала создайте строку и запишите ее за один раз:

final_log = "Subject: {subject} Date: {date} Time: {time}\n".format(
    subject=subject, date=time.strftime("%d/%m/%Y"), time=time.strftime("%H:%M:%S")
)
f.write(final_log)
1 голос
/ 12 апреля 2019

Вам потребуется добавить дополнительные операторы записи для вывода дополнительной информации. Также лучше использовать блок with для обработки открытия и закрытия файла, а не делать это вручную. Узнать больше.

Пример:

def send_email():
    from exchangelib import Credentials, Account, Message, Mailbox, UTC_NOW
    import time

    credentials = Credentials('my@email', 'password')
    account = Account('my@email', credentials=credentials, autodiscover=True)

    subject = 'Test Subject'
    m = Message(
        account=account,
        subject=subject,
        body='Test Body',
        to_recipients=[
            Mailbox(email_address='my@email')
        ])

    with open("Output.txt", "w") as text_file:
        text_file.write("Subject: ")
        text_file.write(subject)
        text_file.write(" ")
        text_file.write("Date: ")
        text_file.write(time.strftime("%d/%m/%Y"))
        text_file.write(" ")
        text_file.write("Time: ")
        text_file.write(time.strftime("%H:%M:%S"))
        text_file.close()
        text_file.close()

    m.send()


send_email()

Выход: Subject: Test Subject Date: 12/04/2019 Time: 18:49:13

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...