Я приобрел аутентифицированный SMTP-пакет у моей хостинг-компании.
Я успешно проверил настройки учетной записи через Outlook 2010.
Настройки Outlook:
Электронная почта : me@domain.com
Исходящий SMTP : smtp.hostingcompany.net
Информация для входа:
- пользователь : mydomain.com_account
- пароль : пароль
Дополнительные настройки> Исходящий сервер:
- Мой исходящий сервер (SMTP) Требуется проверка подлинности
- Пользователь : mydomain
- Пропуск : пароль
Я перепробовал все возможные комбинации при указании NetworkCredentials и продолжаю получать SMTP Exception : "Faulure Sending Email"
InnerException : недопустимая длина для массива символов Base-64.
public static void SendEmail(string To, string Subject, string Body)
{
try
{
using (SmtpClient mySmtpClient = new SmtpClient(GlobalSettings.EmailHost))
{
mySmtpClient.UseDefaultCredentials = false;
//mySmtpClient.EnableSsl = false;
mySmtpClient.Credentials = new NetworkCredential(mydomain.com_account, GlobalSettings.EmailPassword);
MailAddress from = new MailAddress("email@mydomain");
MailAddress to = new MailAddress(To);
using (
MailMessage myMail = new MailMessage(from, to)
{
Subject = Subject,
SubjectEncoding = Encoding.UTF8,
Body = Body,
BodyEncoding = Encoding.UTF8,
IsBodyHtml = true
})
{
mySmtpClient.Send(myMail);
}
}
}
catch (SmtpException ex)
{
Log.WriteLog(string.Format("[Send Mail Exception] --> SMTPException has occurred: {0}", ex.Message), LogLevel.Error);
}
catch (Exception ex)
{
Log.WriteLog(string.Format("[Send Mail Exception] --> Exception has occurred: {0}", ex.Message), LogLevel.Error);
}
}
Я испробовал три возможных параметра имени пользователя для входа в NetworkCredential ().
Заранее спасибо.
РЕДАКТИРОВАТЬ: NTLM Hack
Я добавил следующие строки в мой код:
FieldInfo transport = _client.GetType().GetField("transport",
BindingFlags.NonPublic | BindingFlags.Instance);
FieldInfo authModules = transport.GetValue(_client).GetType()
.GetField("authenticationModules",
BindingFlags.NonPublic | BindingFlags.Instance);
Array modulesArray = authModules.GetValue(transport.GetValue(_client)) as Array;
modulesArray.SetValue(modulesArray.GetValue(2), 0);
modulesArray.SetValue(modulesArray.GetValue(2), 1);
modulesArray.SetValue(modulesArray.GetValue(2), 3);
Сейчас я получаю новое сообщение:
Mailbox unavailable. The server response was: relay not permitted