diff --git a/Infrastructure/OptionsSetting.cs b/Infrastructure/OptionsSetting.cs
index 4f7a9dc..5654154 100644
--- a/Infrastructure/OptionsSetting.cs
+++ b/Infrastructure/OptionsSetting.cs
@@ -24,10 +24,12 @@ namespace Infrastructure
///
public class MailOptions
{
- public string From { get; set; }
+ public string FromName { get; set; }
+ public string FromEmail { get; set; }
public string Password { get; set; }
public string Smtp { get; set; }
public int Port { get; set; }
+ public bool UseSsl { get; set; }
public string Signature { get; set; }
}
///
diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs
index e2a5b67..253de7e 100644
--- a/ZR.Admin.WebApi/Controllers/CommonController.cs
+++ b/ZR.Admin.WebApi/Controllers/CommonController.cs
@@ -70,15 +70,15 @@ namespace ZR.Admin.WebApi.Controllers
/// 请求参数接收实体
///
[ActionPermissionFilter(Permission = "tool:email:send")]
- [Log(Title = "发送邮件", IsSaveRequestData = false)]
+ [Log(Title = "发送邮件")]
[HttpPost]
public IActionResult SendEmail([FromBody] SendEmailDto sendEmailVo)
{
- if (sendEmailVo == null || string.IsNullOrEmpty(sendEmailVo.Subject) || string.IsNullOrEmpty(sendEmailVo.ToUser))
+ if (sendEmailVo == null)
{
return ToResponse(ApiResult.Error($"请求参数不完整"));
}
- if (string.IsNullOrEmpty(OptionsSetting.MailOptions.From) || string.IsNullOrEmpty(OptionsSetting.MailOptions.Password))
+ if (string.IsNullOrEmpty(OptionsSetting.MailOptions.FromEmail) || string.IsNullOrEmpty(OptionsSetting.MailOptions.Password))
{
return ToResponse(ApiResult.Error($"请配置邮箱信息"));
}
@@ -90,11 +90,11 @@ namespace ZR.Admin.WebApi.Controllers
{
toUsers.Append(mailHelper.FromEmail);
}
- mailHelper.SendMail(toUsers, sendEmailVo.Subject, sendEmailVo.Content, sendEmailVo.FileUrl, sendEmailVo.HtmlContent);
+ string result = mailHelper.SendMail(toUsers, sendEmailVo.Subject, sendEmailVo.Content, sendEmailVo.FileUrl, sendEmailVo.HtmlContent);
- logger.Info($"发送邮件{JsonConvert.SerializeObject(sendEmailVo)}");
+ logger.Info($"发送邮件{JsonConvert.SerializeObject(sendEmailVo)}, 结果{result}");
- return SUCCESS(true);
+ return SUCCESS(result);
}
#region 上传
diff --git a/ZR.Admin.WebApi/Extensions/DbExtension.cs b/ZR.Admin.WebApi/Extensions/DbExtension.cs
index 006375f..ed3fb44 100644
--- a/ZR.Admin.WebApi/Extensions/DbExtension.cs
+++ b/ZR.Admin.WebApi/Extensions/DbExtension.cs
@@ -26,7 +26,7 @@ namespace ZR.Admin.WebApi.Extensions
/// 初始化db
///
///
- public static void AddDb(IConfiguration Configuration)
+ public static void AddDb(this IServiceCollection services, IConfiguration Configuration)
{
List dbConfigs = Configuration.GetSection("DbConfigs").Get>();
diff --git a/ZR.Admin.WebApi/appsettings.json b/ZR.Admin.WebApi/appsettings.json
index 5fbd07b..c9aa223 100644
--- a/ZR.Admin.WebApi/appsettings.json
+++ b/ZR.Admin.WebApi/appsettings.json
@@ -18,8 +18,8 @@
"urls": "http://localhost:8888", //项目启动url,如果改动端口前端对应devServer也需要进行修改
"corsUrls": "http://localhost:8887", //跨域地址(前端启动项目,前后端分离单独部署需要设置),多个用","隔开
"JwtSettings": {
- "Issuer": "ZRAdmin.NET",
- "Audience": "ZRAdmin.NET",
+ "Issuer": "ZRAdmin.NET", //即token的签发者。
+ "Audience": "ZRAdmin.NET", //指该token是服务于哪个群体的(群体范围)
"SecretKey": "SecretKey-ZRADMIN.NET-20210101",
"Expire": 1440 //jwt登录过期时间(分)
},
@@ -60,8 +60,10 @@
},
//邮箱配置信息
"MailOptions": {
+ //发件人名称
+ "FromName": "system",
//发送人邮箱
- "From": "", //eg:xxxx@qq.com
+ "FromEmail": "", //eg:xxxx@qq.com
//发送人邮箱密码
"Password": "123456",
//协议
diff --git a/ZR.Common/MailHelper.cs b/ZR.Common/MailHelper.cs
index f3984be..79b8b3d 100644
--- a/ZR.Common/MailHelper.cs
+++ b/ZR.Common/MailHelper.cs
@@ -14,50 +14,18 @@ namespace ZR.Common
/// 发送人邮箱
///
public string FromEmail { get; set; } = "";
- ///
- /// 发送人密码
- ///
- public string FromPwd { get; set; } = "";
- ///
- /// 发送协议
- ///
- public string Smtp { get; set; } = "smtp.qq.com";
- ///
- /// 协议端口
- ///
- public int Port { get; set; } = 587;
- ///
- /// 邮件签名
- ///
- public string Signature { get; set; }
- ///
- /// 是否使用SSL协议
- ///
- public bool UseSsl { get; set; } = false;
private readonly MailOptions mailOptions = new();
public MailHelper()
{
AppSettings.Bind("MailOptions", mailOptions);
- FromEmail = mailOptions.From;
- Smtp = mailOptions.Smtp;
- FromPwd = mailOptions.Password;
- Port = mailOptions.Port;
+ FromEmail= mailOptions.FromEmail;
}
- public MailHelper(string fromEmail, string smtp, int port, string fromPwd)
+ public MailHelper(MailOptions _mailOptions)
{
- FromEmail = fromEmail;
- Smtp = smtp;
- FromPwd = fromPwd;
- Port = port;
+ this.mailOptions = _mailOptions;
+ FromEmail = _mailOptions.FromEmail;
}
-
- public MailHelper(string fromEmail, string fromPwd)
- {
- FromEmail = fromEmail;
- FromPwd = fromPwd;
- }
-
///
/// 发送一个
///
@@ -65,13 +33,13 @@ namespace ZR.Common
///
///
///
- public void SendMail(string toAddress, string subject, string text, string path = "", string html = "")
+ public string SendMail(string toAddress, string subject, string text, string path = "", string html = "")
{
IEnumerable mailboxes = new List() {
new MailboxAddress(toAddress, toAddress)
};
- SendMail(mailboxes, subject, text, path, html);
+ return SendMail(mailboxes, subject, text, path, html);
}
///
@@ -81,7 +49,7 @@ namespace ZR.Common
///
///
///
- public void SendMail(string[] toAddress, string subject, string text, string path = "", string html = "")
+ public string SendMail(string[] toAddress, string subject, string text, string path = "", string html = "")
{
IList mailboxes = new List() { };
foreach (var item in toAddress)
@@ -89,7 +57,7 @@ namespace ZR.Common
mailboxes.Add(new MailboxAddress(item, item));
}
- SendMail(mailboxes, subject, text, path, html);
+ return SendMail(mailboxes, subject, text, path, html);
}
///
@@ -100,16 +68,16 @@ namespace ZR.Common
///
/// 附件url地址
/// 网页HTML内容
- private void SendMail(IEnumerable toAddress, string subject, string text, string path = "", string html = "")
+ private string SendMail(IEnumerable toAddress, string subject, string text, string path = "", string html = "")
{
MimeMessage message = new MimeMessage();
//发件人
- message.From.Add(new MailboxAddress(FromEmail, FromEmail));
+ message.From.Add(new MailboxAddress(mailOptions.FromName, mailOptions.FromEmail));
//收件人
message.To.AddRange(toAddress);
message.Subject = subject;
message.Date = DateTime.Now;
-
+
//创建附件Multipart
Multipart multipart = new Multipart("mixed");
var alternative = new MultipartAlternative();
@@ -157,18 +125,18 @@ namespace ZR.Common
//开始发送
using var client = new SmtpClient();
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
+ //client.CheckCertificateRevocation = false;
+ client.Connect(mailOptions.Smtp, mailOptions.Port, mailOptions.UseSsl);
- //Smtp服务器
- //client.Connect("smtp.qq.com", 587, false);
- client.Connect(Smtp, Port, true);
//登录,发送
//特别说明,对于服务器端的中文相应,Exception中有编码问题,显示乱码了
- client.Authenticate(FromEmail, FromPwd);
+ client.Authenticate(System.Text.Encoding.UTF8, mailOptions.FromEmail, mailOptions.Password);
- client.Send(message);
+ var result = client.Send(message);
//断开
client.Disconnect(true);
- Console.WriteLine($"发送邮件成功{DateTime.Now}");
+ Console.WriteLine($"【{DateTime.Now}】发送邮件结果{result}");
+ return result;
}
}
}
\ No newline at end of file