using System.ComponentModel.DataAnnotations;

namespace Dpz.Core.Public.ViewModel;

/// <summary>
/// Represents the VmEmailConfig type.
/// </summary>
public class VmEmailConfig
{
    /// <summary>
    /// Gets or sets Id.
    /// </summary>
    public string? Id { get; set; }

    /// <summary>
    /// 别名
    /// </summary>
    [Display(Name = "别名"), Required(ErrorMessage = "请填写别名")]
    public string? Name { get; set; }

    /// <summary>
    /// 邮箱名称
    /// </summary>
    [Display(Name = "邮箱名称"), Required(ErrorMessage = "请填写邮箱名称")]
    public string? EmailName { get; set; }

    /// <summary>
    /// Email地址
    /// </summary>
    [
        Required(ErrorMessage = "请填写email地址"),
        DataType(DataType.EmailAddress, ErrorMessage = "请填写正确的email地址")
    ]
    [Display(Name = "Email地址")]
    public string? Email { get; set; }

    /// <summary>
    /// 账户密码
    /// </summary>
    [
        Display(Name = "账户密码"),
        DataType(DataType.Password),
        Required(ErrorMessage = "请填写账户密码")
    ]
    public string? Password { get; set; }

    /// <summary>
    /// IMAP服务器地址
    /// </summary>
    [Required(ErrorMessage = "请填写IMAP服务器地址"), Display(Name = "IMAP服务器地址")]
    public string? ImapHost { get; set; }

    /// <summary>
    /// IMAP端口,默认993
    /// </summary>
    [
        Display(Name = "IMAP端口"),
        Range(1, 99999, ErrorMessage = "端口边界值为1-99999"),
        Required(ErrorMessage = "请填写IMAP端口")
    ]
    public int? ImapPort { get; set; } = 993;

    /// <summary>
    /// IMAP是否使用SSL
    /// </summary>
    [Display(Name = "IMAP是否使用SSL")]
    public bool ImapUseSsl { get; set; } = true;

    /// <summary>
    /// SMTP服务器地址
    /// </summary>
    [Required(ErrorMessage = "请填写SMTP服务器地址"), Display(Name = "SMTP服务器地址")]
    public string? SmtpHost { get; set; }

    /// <summary>
    /// SMTP端口,默认587
    /// </summary>
    [
        Display(Name = "SMTP端口"),
        Range(1, 99999, ErrorMessage = "端口边界值为1-99999"),
        Required(ErrorMessage = "请填写SMTP端口")
    ]
    public int? SmtpPort { get; set; } = 587;

    /// <summary>
    /// SMTP是否使用SSL
    /// </summary>
    [Display(Name = "SMTP是否使用SSL")]
    public bool SmtpUseSsl { get; set; } = false;

    /// <summary>
    /// 相关用户
    /// </summary>
    public VmUserInfo? AboutUser { get; set; }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个用于表示邮箱配置信息的视图模型(ViewModel)类,主要用于在Web应用程序中处理邮箱配置相关的数据绑定和验证。以下是详细解释:

类概述

VmEmailConfig 是一个邮箱配置的视图模型类,包含了完整的邮箱服务器配置信息,支持IMAP和SMTP协议。

主要属性说明

基本信息

  • Id: 配置项的唯一标识符
  • Name: 配置的别名,用于区分不同的邮箱配置
  • EmailName: 邮箱显示名称
  • Email: 邮箱地址
  • Password: 邮箱账户密码

IMAP配置(用于接收邮件)

  • ImapHost: IMAP服务器地址
  • ImapPort: IMAP端口号,默认值为993
  • ImapUseSsl: 是否启用SSL加密,默认为true

SMTP配置(用于发送邮件)

  • SmtpHost: SMTP服务器地址
  • SmtpPort: SMTP端口号,默认值为587
  • SmtpUseSsl: 是否启用SSL加密,默认为false

关联信息

  • AboutUser: 关联的用户信息对象

数据验证特性

代码使用了丰富的数据注解来实现客户端和服务端验证:

  1. Required: 必填字段验证
  2. Display: 设置字段的显示名称
  3. DataType: 指定数据类型(如EmailAddress、Password)
  4. Range: 数值范围验证(端口号1-99999)

使用场景

这个类通常用于:

  • Web表单的数据绑定
  • 邮箱配置页面的数据收集
  • API接口的数据传输
  • 邮件服务的初始化配置

设计特点

  1. 类型安全: 使用可空类型避免空引用异常
  2. 用户友好: 提供中文错误提示信息
  3. 默认值: 为常用端口设置合理的默认值
  4. 完整性: 同时支持收发邮件的完整配置

这是一个设计良好的数据传输对象,适合在现代Web应用程序中使用。

评论加载中...