世味 发表于 2023-9-13 15:37:12

Python 发邮件

有大佬能帮忙看一下这个问题,一直报:
(550, b'The "From" header is missing or invalid. Please follow RFC5322, RFC2047, RFC822 standard protocol. https://service.mail.qq.com/detail/124/995.')

isdkz 发表于 2023-9-13 15:37:27

这个问题是因为邮件发送时缺少或者无效的发件人地址导致的。邮件发送时需要遵循RFC5322、RFC2047、RFC822标准协议,确保发件人地址的正确性。可以通过在代码中指定发件人地址来解决这个问题。以下是一个使用Python发送邮件的示例代码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发件人地址
sender = 'your_email_address'
# 收件人地址
receiver = 'receiver_email_address'
# SMTP服务器地址
smtp_server = 'smtp_server_address'
# 发件人邮箱账号
username = 'your_email_address'
# 发件人邮箱密码或授权码
password = 'your_email_password_or_authorization_code'

# 邮件正文内容
message = MIMEText('邮件内容', 'plain', 'utf-8')
# 邮件主题
message['Subject'] = Header('邮件主题', 'utf-8')
# 发件人地址
message['From'] = Header(sender, 'utf-8')
# 收件人地址
message['To'] = Header(receiver, 'utf-8')

# 发送邮件
try:
    smtpObj = smtplib.SMTP(smtp_server)
    smtpObj.login(username, password)
    smtpObj.sendmail(sender, receiver, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)


在上面的代码中,需要将 your_email_address 、 receiver_email_address 、 smtp_server_address 、 your_email_password_or_authorization_code 替换为实际的值。同时,需要确保发件人地址的正确性,以遵循RFC5322、RFC2047、RFC822标准协议。

世味 发表于 2023-9-13 15:46:02

isdkz 发表于 2023-9-13 15:37
这个问题是因为邮件发送时缺少或者无效的发件人地址导致的。邮件发送时需要遵循RFC5322、RFC2047、RFC822标 ...

同样的问题{:10_269:}

cflying 发表于 2023-9-13 16:31:42

本帖最后由 cflying 于 2023-9-13 17:31 编辑

1、要不你去掉header,只保留sender试试,或者直接去掉utf-8,应该就不会550了
2、待会儿我知道你下个问题肯定是附件为啥发不出去?我先给你回答了:你用MIMEText发附件是几个意思?MIMEMultipart干啥的?

cflying 发表于 2023-9-13 17:35:11

1

世味 发表于 2023-9-14 10:11:57

本帖最后由 世味 于 2023-9-14 10:13 编辑

cflying 发表于 2023-9-13 16:31
1、要不你去掉header,只保留sender试试,或者直接去掉utf-8,应该就不会550了
2、待会儿我知道你下个问题 ...

这里的确用错了,应该用MIMEApplication发附件,谢谢大佬提醒.

页: [1]
查看完整版本: Python 发邮件