代码工作上周 - UnicoderEncodeError:'ascii'编解码器无法编码字符 - Python 3.X

问题描述 投票:1回答:1

所以,我上周写了这个代码,一切都运行得很好。我可以下载该文件,但现在它在尝试发送电子邮件时给我一个错误消息。我环顾四周,似乎找不到任何专门解决这个问题的东西。

UnicodeEncodeError:'ascii'编解码器无法编码位置651-652中的字符:序数不在范围内(128)

任何和所有的帮助表示赞赏。

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import time
import os

#eliminates the "save as" pop-up
download_dir = 'C:/Users/rkrouse/Desktop/Python/AZ'
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", download_dir)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.ms-excel")

driver = webdriver.Firefox(firefox_profile=fp)

#navigate to website
driver.get('https://www.azroc.gov/roc/postinglist.html')

#click to download file
driver.find_element_by_partial_link_text("Dual").click()
time.sleep(5)

#sets up email delivery
EMAIL_SERVER = 'yada'
EMAIL_PORT = 25
EMAIL_FROM = 'yada'
RECIPIENT_LIST = ['yada']

msg = MIMEMultipart()
msg['From'] = EMAIL_FROM
msg['To'] = ", ".join(RECIPIENT_LIST)
msg['Subject'] = 'Arizona Dual Contractors List'

#email content
message = """<html>
<body>
Attached is the Arizona Contractors Spreadsheet.
<br><br>

Let me know if you have any questions

</body>
</html>
"""

msg.attach(MIMEText(message, 'html'))

#attaches file to email
filename = r'C:\Users\rkrouse\Downloads\active_contractor_dual.xls'
attachment = open(filename, 'rb')

part = MIMEBase('application','octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition','attachment; filename= '+filename)

msg.attach(part)

#sends email
smtpserver = smtplib.SMTP(EMAIL_SERVER, EMAIL_PORT)
smtpserver.sendmail(EMAIL_FROM, RECIPIENT_LIST, msg.as_string())
smtpserver.quit()

#closes file and deletes from directory
attachment.close()
os.remove(filename) 
python python-unicode
1个回答
0
投票
encoders.encode_base64(part) 

在设置有效负载和标头时需要添加。有问题的代码已得到纠正以反映解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.