Я новичок в Python и пытаюсь создать сценарий отправки электронной почты через соединение через сокет, но, похоже, не могу подписать его с помощью библиотеки dkimpy. Я попробовал пару примеров в Интернете, но все они возвращали одну и ту же ошибку при запуске dkim.sign:
File "C:\Python34\lib\re.py", line 196, in split return _compile(pattern,flags).split(string, maxsplit)
TypeError: expected string or buffer
Насколько я могу судить, первая переменная в функции dkim.sign должна быть строкой, поэтому я попробовал readlines() и даже .as_string() просто для уверенности. Я проверил сообщение, и оно похоже на RFC822. Но я еще раз проверю, если кто-то думает, что это может быть проблемой. Без dkim.sign он работает отлично (минус любая безопасность, такая как SPF/DKIM)
Это фрагмент кода, который я использую:
f=open('mail.htm','r')
text=MIMEText(f.read(),'html')
headers = Parser().parse(open('mail.htm', 'r'))
sender=headers['From']
receiver=headers['To']
subj=headers['Subject']
f.close()
private_key = open('default.pem').read()
headers = ['To', 'From', 'Subject']
sig = dkim.sign(text, 'default', '<mydomain.here>', private_key, include_headers=headers)
Проанализированные заголовки также используются в качестве входных данных для сценария отправки сокета. У меня есть ключ dkim для тестов, но я не думаю, что он доходит даже до этого момента.
Любое понимание?
РЕДАКТИРОВАТЬ: Хорошо, я только что попытался проанализировать строку (вместо того, чтобы подписывать ее) с помощью dkim.rfc822_parse из dkimpy lib, и я получаю следующую ошибку:
return _compile(pattern, flags).split(string, maxsplit)
TypeError: can't use a bytes pattern on a string-like object
Я читаю эту запись или мне кажется, что код ожидает строку, но шаблон в байтах?
ИСПРАВЛЕНО: Как ни странно, я не подумал проверить приватный ключ. Я вручную создал ключ в Win, поэтому без моего ведома Windows добавила невидимый символ разрыва строки, который даже vim или nano не могли видеть. После удаления с помощью MCEdit программа заработала без сбоев. Спасибо за помощь :)