Столкнулся с проблемой, когда метод принимает входящие параметры коллекции словаря, подскажите пожалуйста, как осуществить передачу параметров в метод.
public bool SendMail(Dictionary<string, string> message)
{
try
{
var from = "MailAdress";
var pass = "password";
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(from, pass);
client.EnableSsl = true;
var mail = new MailMessage(from, message["Delivery"]);
mail.Subject = message["Subject"];
mail.Body = message["Body"];
mail.IsBodyHtml = true;
client.Send(mail);
return true;
}
catch (Exception e)
{
return false;
}
}
Вам непонятно, как составлять message?
var message = new Dictionary<string, string>
{
{"Subject", "Мой заголовок письма"},
{"Body", "Содержимое письма"},
{"Delivery", "Email@Addr.ru"},
};
SendMail(message);
Или как вариант:
var message = new Dictionary<string, string>();
message.Add("Subject", "Мой заголовок письма");
message.Add("Body", "Содержимое письма");
message.Add("Delivery", "Email@Addr.ru");
SendMail(message);
Легко гуглится по словам c# initialize dictionary, например Proper way to initialize a C# dictionary with values already in it?
Но вообще, лучше не использовать в подобных случаях словарь, так как код будет достаточно хрупким и из-за небольших опечаток может сломаться.
Давайте лучше переделаем на класс:
public class MailMessageParams
{
public string Subject { get; set; }
public string HtmlBody { get; set; }
public MailAddress To { get; set; }
}
Переделаем ваш метод:
public bool SendMail(MailMessageParams message)
{
try
{
var from = "MailAdress";
var pass = "password";
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(from, pass);
client.EnableSsl = true;
var mail = new MailMessage(new MailAddress(from), message.To);
mail.Subject = message.Subject;
mail.Body = message.HtmlBody;
mail.IsBodyHtml = true;
client.Send(mail);
return true;
}
catch (Exception)
{
return false;
}
}
Вызов:
var message = new MailMessageParams
{
Subject = "Мой заголовок письма",
HtmlBody = "Html содержимое письма",
To = new MailAddress("Email@Addr.ru"),
};
SendMail(message);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости