Я хочу отправлять электронные письма из моего кода Python, вызывающего msmtp, используя подпроцесс. Некоторые электронные письма длинные (возможно, несколько КБ, но не безумно длинные). Следующий код отлично работает, возможно, с 10 строками электронного письма, но если больше, то электронное письмо будет отправлено «ОК» с правильной темой, но без основного текста вообще.
Код: Выделить всё
p = subprocess.Popen(('msmtp', '-t'), stdin=open("email_file.txt"), stdout=subprocess.PIPE)
Где email_file.txt содержит текст «Кому/От/Тема» и «Основной текст» в формате, ожидаемом msmtp. Я знаю, что формат файла в порядке, и msmtp доволен работой, потому что простая команда Linux:
отлично работает с длинным текстом электронного письма.
Я также пробовал построчно передавать текстовый файл электронного письма, используя:
Код: Выделить всё
p = subprocess.Popen(('msmtp', '-t'), stdin=subprocess.PIPE, stdout=subprocess.PIPE)
for line in email_file_handle.readlines():
p.stdin.write(line.encode('utf-8'))
p.stdin.close()
но это дает тот же результат
Подробнее здесь:
https://stackoverflow.com/questions/792 ... ed-command