告诉我,用 python 向 yandex 邮件发送消息。
找到了代码,但错误消失了。
我看了,上面写着错误可以起飞,因为密码可能不是utf-8编码。
我写了密码,addr_from,addr_to 的代码:encode(encoding='utf-8') - 零情绪。
告诉我如何修复错误?
import smtplib # Импортируем библиотеку по работе с SMTP
# Добавляем необходимые подклассы - MIME-типы
from email.mime.multipart import MIMEMultipart # Многокомпонентный объект
from email.mime.text import MIMEText # Текст/HTML
addr_from = "foo@yandex.ru"
addr_to = "bar@yandex.ru"
password = "pass" # пароль от почты addr_from
msg = MIMEMultipart() # Создаем сообщение
msg['From'] = addr_from # Адресат
msg['To'] = addr_to # Получатель
msg['Subject'] = 'Тема сообщения' # Тема сообщения
body = "Текст сообщения"
msg.attach(MIMEText(body, 'plain')) # Добавляем в сообщение текст
server = smtplib.SMTP_SSL('smtp.yandex.ru', 465) # Создаем объект SMTP
# server.starttls() # Начинаем шифрованный обмен по TLS
server.login(addr_from, password) # Получаем доступ
server.send_message(msg) # Отправляем сообщение
server.quit() # Выходим
错误:
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed: This user does not have access rights to this service')
刚刚在本地 gitlab 的 yandex 上的邮件帐户出现了相同的错误。基于谷歌,它通常与使用 yandex 帐户设置中禁用的功能有关。
就我而言,它有助于启用“门户密码”选项。
选项路径:
有同样的问题,这是答案 - https://searchengines.guru/en/forum/1037543。
您需要设置盒子: