Can specify display name for sender in email settings (Fix https://github.com/btcpayserver/btcpayserver/issues/910)

This commit is contained in:
nicolas.dorier 2019-07-14 22:45:14 +09:00
parent d176a16caa
commit 010ba4d5b6
No known key found for this signature in database
GPG key ID: 6618763EF09186FE
5 changed files with 31 additions and 12 deletions

View file

@ -859,7 +859,8 @@ namespace BTCPayServer.Controllers
try
{
var client = model.Settings.CreateSmtpClient();
await client.SendMailAsync(model.Settings.From, model.TestEmail, "BTCPay test", "BTCPay test");
var message = model.Settings.CreateMailMessage(new MailAddress(model.TestEmail), "BTCPay test", "BTCPay test");
await client.SendMailAsync(message);
model.StatusMessage = "Email sent to " + model.TestEmail + ", please, verify you received it";
}
catch (Exception ex)

View file

@ -1,4 +1,5 @@
using System;
using System.Net.Mail;
using System.Threading.Tasks;
using BTCPayServer.Data;
using BTCPayServer.Models.ServerViewModels;
@ -39,7 +40,8 @@ namespace BTCPayServer.Controllers
return View(model);
}
var client = model.Settings.CreateSmtpClient();
await client.SendMailAsync(model.Settings.From, model.TestEmail, "BTCPay test", "BTCPay test");
var message = model.Settings.CreateMailMessage(new MailAddress(model.TestEmail), "BTCPay test", "BTCPay test");
await client.SendMailAsync(message);
model.StatusMessage = "Email sent to " + model.TestEmail + ", please, verify you received it";
}
catch (Exception ex)

View file

@ -28,10 +28,8 @@ namespace BTCPayServer.Services.Mails
}
using (var smtp = emailSettings.CreateSmtpClient())
{
var mail = new MailMessage(emailSettings.From, email, subject, message)
{
IsBodyHtml = true
};
var mail = emailSettings.CreateMailMessage(new MailAddress(email), subject, message);
mail.IsBodyHtml = true;
try
{
await smtp.SendMailAsync(mail).WithCancellation(cancellationToken);

View file

@ -29,7 +29,15 @@ namespace BTCPayServer.Services.Mails
{
get; set;
}
[Display(Name = "Sender's display name")]
public string FromDisplay
{
get; set;
}
[EmailAddress]
[Display(Name = "Sender's email address")]
public string From
{
get; set;
@ -53,6 +61,17 @@ namespace BTCPayServer.Services.Mails
return false;
}
public MailMessage CreateMailMessage(MailAddress to, string subject, string message)
{
return new MailMessage(
from: new MailAddress(From, FromDisplay),
to: to)
{
Subject = subject,
Body = message
};
}
public SmtpClient CreateSmtpClient()
{
SmtpClient client = new SmtpClient(Server, Port.Value);

View file

@ -21,36 +21,35 @@
<input asp-for="Settings.Port" class="form-control" />
<span asp-validation-for="Settings.Port" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Settings.FromDisplay"></label>
<input asp-for="Settings.FromDisplay" class="form-control" />
<span asp-validation-for="Settings.FromDisplay" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Settings.From"></label>
<input asp-for="Settings.From" class="form-control" />
<span asp-validation-for="Settings.From" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Settings.Login"></label>
<input asp-for="Settings.Login" class="form-control" />
<span asp-validation-for="Settings.Login" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Settings.Password"></label>
<input asp-for="Settings.Password" value="@Model.Settings.Password" class="form-control" />
<span asp-validation-for="Settings.Password" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Settings.EnableSSL"></label>
<input asp-for="Settings.EnableSSL" type="checkbox" class="form-check-inline" />
</div>
<div class="form-group">
<label asp-for="TestEmail"></label>
<input asp-for="TestEmail" class="form-control" />
<span asp-validation-for="TestEmail" class="text-danger"></span>
</div>
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
<button type="submit" class="btn btn-primary" name="command" value="Test">Test</button>
</form>