Есть ли способ исправить строки Python, встроенные в тело письма html, от возврата «none»? - PullRequest
0 голосов
/ 26 января 2019

Python-строки , встроенные или вставленные в html-сообщения электронной почты, возвращают 'none' в теле отправленного сообщения.

Я импортировал файл .py с именем Bscrape.py в качестве модуля и вызвал его функцию. Это сработало, но когда я пытаюсь напечатать строку как print (k), я получаю 'TypeError: должно быть str, а не NoneType' . Использование только строки «k» удаляет ошибку, но отправляет электронное письмо со строкой, которая выглядит как « none ».

import smtplib
import email
import sys, csv
from email.mime.multipart import MIMEMultipart
from email.headerregistry import Address
from email.message import EmailMessage
import email.encoders
import email.mime.text
import email.mime.base
from email.mime.text import MIMEText
import ast
import re
import os
import subprocess

smtpserver = smtplib.SMTP_SSL('smtp.gmail.com', 465)

me =  'Update <my_email@gmail.com>'
you = "your_email@gmail.com"



# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "Today's Headlines | Freshly Pressed"
msg['From'] = me
msg['To'] = you



#specifiy the module location for import
sys.path.extend(["C:\blinker\Webscrp_send_experiments"])

#import the python script file for usage
from Bscrape import print_BAE
k = str(print_BAE())

# now place this in the html body print_BAE()


#####
text = "Numbers for Monday"
html = """\
<html>
<body>

  <h3>Values remain marginal</h3>
  <p>States on the coast returned these numbers.<br>
  """ + k + """<br>
  The number above is surprising</p>

  <hr>     
  </body>
</html>
"""

# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')

# Attach parts into message container.
msg.attach(part1)
msg.attach(part2)

# Send the message via local SMTP server.
s = smtplib.SMTP_SSL('smtp.gmail.com', 465)
s.login("my_email@gmail.com", "my_password")
s.sendmail(me, you, msg.as_string())
s.quit()

Я ожидаю, что python распечатает строку "k" в теле отправленного электронного письма. Это не работает. Он печатает всю электронную почту со строкой, обозначенной как «none» .

1 Ответ

0 голосов
/ 26 января 2019

Проблема: Функция в импортированном готовом скрипте Beautifulsoup (Bscrape) с моего локального диска не будет печататься или отображаться, если встроена в виде строки в тело сообщения электронной почты.

Решение было : вставьте скрипт Beautifulsoup в целевой скрипт, а не импортируйте его. При этом «None» исчезает, и все строки сразу работают, когда встраиваются в виде строки в тело html электронной почты. Электронная почта теперь отображает весь текст.

Моя проблема была решена.

...