您的位置:

提示ValueError('Invalid address only %s could be parsed from "%s"' % (token, addr))的解决方案

  发布时间:2023-03-11 17:00:03
如果你仍然不能解决错误,建议查看 Django 的错误日志,以获取更多有关错误的信息。例如,你可以使用 Python 的 smtplib 模块或者第三方库来发送电子邮件。如何解决要解决错误,需要确保你在调用 Django 的内置函数 send_mail 时提供的所有电子邮件地址都合法。例如,使用 smtplib 模块时需要指定 SMTP 服务器的地址,使用 Flask-Mail 库时需要在 Flask 应用中配置 Flask-Mail。

报错的原因

ValueError('Invalid address; only %s could be parsed from "%s"' % (token, addr)) 通常是因为 Django 尝试解析不合法的电子邮件地址。

这个错误通常在你尝试使用 Django 的内置函数 send_mail 时出现。例如:

from django.core.mail import send_mail

send_mail(

'Subject here', 'Here is the message.', 'from@example.com',

['to@example.com'], fail_silently=False,

)

如果你在调用 send_mail 函数时提供了不合法的电子邮件地址,则可能会出现 ValueError('Invalid address; only %s could be parsed from "%s"' % (token, addr)) 错误。

为了解决这个错误,你需要确保在调用 send_mail 函数时提供的所有电子邮件地址都合法。例如,你可以检查电子邮件地址是否包含了不合法的字符,或者检查电子邮件地址是否缺少 @ 符号。

例如,以下是一个使用了合法电子邮件地址的 send_mail 调用的例子:

from django.core.mail import send_mail

send_mail(

'Subject here', 'Here is the message.', 'from@example.com',

['to@example.com'], fail_silently=False,

)

电子邮件时,应该确保所有电子邮件地址都合法。如果你仍然不能解决 ValueError('Invalid address; only %s could be parsed from "%s"' % (token, addr)) 错误,建议查看 Django 的错误日志,以获取更多有关错误的信息。

除了检查电子邮件地址是否合法之外,你还可以考虑使用其他方法发送电子邮件。例如,你可以使用 Python 的 smtplib 模块或者第三方库(如 Flask-Mail)来发送电子邮件。这些方法可能更加灵活,并且可以让你更好地控制电子邮件的发送过程。

如何解决

要解决 ValueError('Invalid address; only %s could be parsed from "%s"' % (token, addr)) 错误,需要确保你在调用 Django 的内置函数 send_mail 时提供的所有电子邮件地址都合法。

你可以通过以下方法来确保电子邮件地址合法:

1. 检查电子邮件地址是否包含了不合法的字符。例如,电子邮件地址中不能包含空格。

2. 确保电子邮件地址符合格式要求。例如,电子邮件地址必须包含 @ 符号。

3. 使用 Python 的 email 模块来验证电子邮件地址的格式。例如:


from email.utils import parseaddr

def is_valid_email(addr):
    name, email = parseaddr(addr)
    return bool(email)

如果你仍然不能解决 ValueError('Invalid address; only %s could be parsed from "%s"' % (token, addr)) 错误,建议查看 Django 的错误日志,以获取更多有关错误的信息。

另外,你还可以考虑使用其他方法发送电子邮件,如使用 Python 的 smtplib 模块或者第三方库(如 Flask-Mail)。这些方法可能更加灵活,并且可以让你更好地控制电子邮件的发送过程。

下面是使用 smtplib 模块发送电子邮件的示例代码:


import smtplib
from email.mime.text import MIMEText

msg = MIMEText('Here is the message.')
msg['Subject'] = 'Subject here'
msg['From'] = 'from@example.com'
msg['To'] = 'to@example.com'

s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()

使用 smtplib 模块发送电子邮件时,你需要指定 SMTP 服务器的地址。如果你使用的是免费的电子邮件服务(如 Gmail),则还需要提供用户名和密码。

使用第三方库发送电子邮件时,过程也大致相似。例如,使用 Flask-Mail 库发送电子邮件的示例代码如下:


from flask_mail import Mail, Message

mail = Mail()

msg = Message('Subject here', sender='from@example.com', recipients=['to@example.com'])
msg.body = 'Here is the message.'

mail.send(msg)

使用 Flask-Mail 库发送电子邮件时,你需要先在 Flask 应用中配置 Flask-Mail,然后才能使用 send 函数发送电子邮件。

注意:如果你使用的是免费的电子邮件服务(如 Gmail),则还需要提供用户名和密码。

如果你仍然不能解决 ValueError('Invalid address; only %s could be parsed from "%s"' % (token, addr)) 错误,建议查看相关的文档和错误日志,以获取更多有关错误的信息。

使用例子

以下是使用 Python 的 email 模块验证电子邮件地址的示例代码:


from email.utils import parseaddr

def is_valid_email(addr):
    name, email = parseaddr(addr)
    return bool(email)

# 验证合法电子邮件地址
print(is_valid_email('user@example.com'))  # True

# 验证不合法电子邮件地址
print(is_valid_email('user@'))  # False
print(is_valid_email('user'))  # False

以下是使用 smtplib 模块发送电子邮件的示例代码:


import smtplib
from email.mime.text import MIMEText

msg = MIMEText('Here is the message.')
msg['Subject'] = 'Subject here'
msg['From'] = 'from@example.com'
msg['To'] = 'to@example.com'

s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()

以下是使用 Flask-Mail 库发送电子邮件的示例代码:


from flask_mail import Mail, Message

mail = Mail()

msg = Message('Subject here', sender='from@example.com', recipients=['to@example.com'])
msg.body = 'Here is the message.'

mail.send(msg)

注意:上述代码仅供参考,你可能需要根据你的实际情况进行修改。例如,使用 smtplib 模块时需要指定 SMTP 服务器的地址,使用 Flask-Mail 库时需要在 Flask 应用中配置 Flask-Mail。