📅  最后修改于: 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)
# 没有发件人地址就无法发送消息
在编写邮件发送功能时,必须指定发件人地址才能成功发送邮件。如果没有指定发件人地址,则会出现“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)