public static void SendMail(string address, string subject, string body, System.Text.Encoding encoding = null, Dictionary<string, byte[]> attachments = null)
{
if (null == encoding) encoding = System.Text.Encoding.Default;
SmtpClient client = new SmtpClient()
{
Port = SmtpSettings.Network.Port,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Host = SmtpSettings.Network.Host,
EnableSsl = false,
Credentials = new System.Net.NetworkCredential(SmtpSettings.Network.UserName, SmtpSettings.Network.Password)
};
byte[] bodyEnc = System.Text.Encoding.UTF8.GetBytes(body);
byte[] encoded = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, encoding, bodyEnc);
string encodedbody = encoding.GetString(encoded);
MailMessage mail = new MailMessage(
new MailAddress(SmtpSettings.From, "Имя отправителя", encoding),
new MailAddress(address, "Имя получателя", encoding)
)
{
Subject = subject,
Body = body,
IsBodyHtml = true
};
if (attachments != null && attachments.Count != 0)
{
foreach (var kvp in attachments)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
ms.Write(kvp.Value, 0, kvp.Value.Length);
mail.Attachments.Add(new Attachment(ms, kvp.Key));
} // using
} // foreach
}
try
{
client.Send(mail);
}
catch(Exception ex)
{
// TODO: Handle Send fail
}
}
Если более общий - то вопрос будет такой - почему при шифровании ключей TLS используются первые 9 символов (0-9) вместо первых скажем 100 из таблицы Юникода (получилось бы что-то типа 100-ричной системы счисления, где каждый символ может иметь 100 различных вариантов)
А ключ шифрования 128 бит - все-таки имеется ввиду 2^128 степени вариантов комбинаций в десятичной системе.
class Program
{
static void Main(string[] args)
{
Task<Guid> wait = Insert();
wait.Wait();
Console.WriteLine(wait.Result);
Console.ReadLine();
}
async static Task<Guid> Insert()
{
string title = "title";
string tags = "tags";
string body = "body";
string connectionString= "Data Source=.;Initial Catalog=Test;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connectionString))
{
string sqlText = "INSERT INTO [Library] (Title, Tags, Body) OUTPUT INSERTED.[Id] VALUES(@Title, @Tags, @Body)";
using (SqlCommand cmd = new SqlCommand(sqlText, conn))
{
cmd.Parameters.AddWithValue("Title", title);
cmd.Parameters.AddWithValue("Tags", tags);
cmd.Parameters.AddWithValue("Body", body);
try
{
conn.Open();
return (Guid) await cmd.ExecuteScalarAsync();
}
finally
{
conn.Close();
}
} // using cmd
} // using conn
} // Insert
}// class Program
Guid insertedGuid = (Guid)await cmd.ExecuteScalarAsync();
return insertedGuid;
async Task<Guid> YourMethod()
Task<Guid> wait = YourMethod()
wait.Wait()
Guid NewGuid = wait.Result
были выполнены в той же последовательности