📜  没有发件人地址就无法发送消息 (1)

📅  最后修改于: 2023-12-03 15:11:04.002000             🧑  作者: Mango

没有发件人地址就无法发送消息

介绍

在编写邮件发送功能时,必须指定发件人地址才能成功发送邮件。如果没有指定发件人地址,则会出现“SMTPSenderRefused: 不能从空地址发送邮件”的错误。

因此,在编写邮件发送程序时,应该确保在发送邮件之前指定发件人地址。同时,还应该对发件人地址的格式进行检查,确保其符合邮件地址的规范。

示例代码
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

def send_email(sender, password, receiver, subject, text):
    # 检查发件人地址是否为空
    if not sender:
        raise ValueError('发送人地址不能为空!')

    # 检查发件人地址是否符合规范
    if '@' not in sender:
        raise ValueError('发件人地址不符合规范!')

    # 构造邮件内容
    content = MIMEText(text, 'html', 'utf-8')
    content['From'] = formataddr(('发件人', sender))
    content['To'] = formataddr(('收件人', receiver))
    content['Subject'] = subject

    # 发送邮件
    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender, password)
        server.sendmail(sender, [receiver], content.as_string())
        print('邮件发送成功!')
    except Exception as e:
        print('邮件发送失败:{}'.format(e))
    finally:
        server.quit()

# 示范使用方法
sender = 'example@gmail.com'
password = '123456'
receiver = 'someone@example.com'
subject = '测试邮件'
text = '这是一封测试邮件。'
send_email(sender, password, receiver, subject, text)
Markdown 代码片段
# 没有发件人地址就无法发送消息

在编写邮件发送功能时,必须指定发件人地址才能成功发送邮件。如果没有指定发件人地址,则会出现“SMTPSenderRefused: 不能从空地址发送邮件”的错误。

因此,在编写邮件发送程序时,应该确保在发送邮件之前指定发件人地址。同时,还应该对发件人地址的格式进行检查,确保其符合邮件地址的规范。

## 示例代码

```python
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

def send_email(sender, password, receiver, subject, text):
    # 检查发件人地址是否为空
    if not sender:
        raise ValueError('发送人地址不能为空!')

    # 检查发件人地址是否符合规范
    if '@' not in sender:
        raise ValueError('发件人地址不符合规范!')

    # 构造邮件内容
    content = MIMEText(text, 'html', 'utf-8')
    content['From'] = formataddr(('发件人', sender))
    content['To'] = formataddr(('收件人', receiver))
    content['Subject'] = subject

    # 发送邮件
    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender, password)
        server.sendmail(sender, [receiver], content.as_string())
        print('邮件发送成功!')
    except Exception as e:
        print('邮件发送失败:{}'.format(e))
    finally:
        server.quit()

# 示范使用方法
sender = 'example@gmail.com'
password = '123456'
receiver = 'someone@example.com'
subject = '测试邮件'
text = '这是一封测试邮件。'
send_email(sender, password, receiver, subject, text)
参考文献