using AutoMapper; using MailKit.Net.Smtp; using Microsoft.AspNetCore.Components.Forms; using MimeKit; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using System.Net; using System.Reflection; using WIDESEA_Core; using WIDESEA_Core.Authorization; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Const; using WIDESEA_Core.Helper; using WIDESEA_Core.HttpContextUser; using WIDESEA_DTO.System; using WIDESEA_IRepository; using WIDESEA_IServices; using WIDESEA_Model; using WIDESEA_Model.Models; namespace WIDESEA_Services { public class Sys_CompanyRegistrationService : ServiceBase, ISys_CompanyRegistrationService { private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IMapper _mapper; private readonly ISys_ConfigService _configService; public Sys_CompanyRegistrationService(ISys_CompanyRegistrationRepository repository, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ISys_ConfigService configService) : base(repository) { _unitOfWorkManage = unitOfWorkManage; _mapper = mapper; _configService = configService; } public WebResponseContent RegisterCompany(RegistrationDTO registrationDto) { WebResponseContent content = new WebResponseContent(); var invalidFields = new List(); var properties = typeof(RegistrationDTO).GetProperties(); foreach (var property in properties) { var value = property.GetValue(registrationDto); // 检查字段值是否为空 if ((value == null || string.IsNullOrWhiteSpace(value.ToString()))) { // 将空字段名称添加到 invalidFields 集合中 invalidFields.Add(property.Name); } } Sys_CompanyRegistration registration = _mapper.Map(registrationDto); // 如果存在空字段,则返回错误消息 if (invalidFields.Any()) { string invalidFieldsMessage = string.Join(", ", invalidFields); return content.Error($"以下字段不能为空: {invalidFieldsMessage}"); } var isResult = base.Db.Queryable().Any(x => x.CompanyName == registrationDto.CompanyName); if (isResult) { return content.Error("已提交注册,请勿重复提交"); } List sysConfigs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_RegExmail); if (sysConfigs == null) { return content.Error("尚未配置邮箱服务,请联系管理员配置邮箱转发"); } // 设置默认值 registration.RegistrationStatus = "待审核"; registration.Creater = "Systeam"; // 创建 HTML 格式的邮件内容 var bodyBuilder = new BodyBuilder(); bodyBuilder.HtmlBody = $@"

新用户注册通知

公司详情

公司名称: {registration.CompanyName}

公司类型: {registration.CompanyType}

行业类别: {registration.Industry}

联系人明细

联系人姓名: {registration.ContactName}

联系人电话: {registration.ContactPhone}

联系人电子邮箱: {registration.ContactEmail}

隐私政策

使用条款和隐私政策: {(registration.AgreeTerms ? "同意" : "不同意")}



发件人,
湖南宽海智能

"; //"chenmeimei@hnkhzn.com" isResult = SendEmail(sysConfigs, registrationDto, bodyBuilder); // 保存到数据库 BaseDal.AddData(registration); return content.OK(); } /// /// 发送邮箱 /// /// /// /// public bool SendEmail(List configs, RegistrationDTO registration, BodyBuilder bodyBuilder) { List sysConfigs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_BaseExmail); if (sysConfigs == null) { return false; } // 获取 smtp 配置 string _smtpServer = sysConfigs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_Server).ConfigValue ?? ""; int _smtpPort = sysConfigs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_Port).ConfigValue.ObjToInt(); string _smtpUser = sysConfigs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_User).ConfigValue ?? ""; string _smtpPass = sysConfigs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_Pass).ConfigValue ?? ""; // 获取 邮件配置 string _smtpTitle = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_Title).ConfigValue ?? ""; string _smtpConTitle = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_ContentTitle).ConfigValue ?? ""; string _smtpRegUser = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SMTP_RegUser).ConfigValue ?? ""; // 创建邮件 var message = new MimeMessage(); message.From.Add(new MailboxAddress(_smtpTitle, _smtpUser)); message.To.Add(new MailboxAddress("", _smtpRegUser)); message.Subject = _smtpConTitle; message.Body = bodyBuilder.ToMessageBody(); // 发送邮件 try { using (var client = new SmtpClient()) { client.Connect(_smtpServer, _smtpPort, true); client.Authenticate(_smtpUser, _smtpPass); client.Send(message); client.Disconnect(true); } Console.WriteLine("邮件发送成功!"); return true; } catch (Exception ex) { Console.WriteLine($"发送邮件时发生未知错误:{ex.Message}"); return false; } } } }