feat(email): 添加发件人邮箱字段并优化邮件发送逻辑

添加独立的sender_email字段作为发件人邮箱,优先使用该字段而非smtp_username
更新相关表单、模型和测试用例以支持新字段
重构邮件发送逻辑,统一邮箱格式验证和错误提示
This commit is contained in:
2026-01-18 18:35:09 +08:00
parent 2320133c20
commit e22bd4a8c3
5 changed files with 107 additions and 45 deletions

View File

@@ -62,12 +62,13 @@ class SystemConfigForm(forms.ModelForm):
"""系统配置表单"""
class Meta:
model = SystemConfig
fields = ['smtp_server', 'smtp_port', 'smtp_username', 'smtp_password', 'send_time', 'recipient_email']
fields = ['smtp_server', 'smtp_port', 'smtp_username', 'smtp_password', 'sender_email', 'send_time', 'recipient_email']
widgets = {
'smtp_server': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '请输入SMTP服务器'}),
'smtp_port': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': '请输入SMTP端口'}),
'smtp_username': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '请输入SMTP用户名'}),
'smtp_password': forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': '请输入SMTP密码'}),
'sender_email': forms.EmailInput(attrs={'class': 'form-control', 'placeholder': '请输入发件人邮箱'}),
'send_time': forms.TimeInput(attrs={'type': 'time', 'class': 'form-control'}),
'recipient_email': forms.EmailInput(attrs={'class': 'form-control', 'placeholder': '请输入收件人邮箱'}),
}

View File

@@ -149,6 +149,7 @@ class SystemConfig(models.Model):
smtp_port = models.IntegerField(default=587, verbose_name="SMTP端口")
smtp_username = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP用户名")
smtp_password = models.CharField(max_length=100, blank=True, null=True, verbose_name="SMTP密码")
sender_email = models.EmailField(blank=True, null=True, verbose_name="发件人邮箱")
send_time = models.TimeField(default='08:00', verbose_name="每日发送时间")
recipient_email = models.EmailField(blank=True, null=True, verbose_name="收件人邮箱")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")