У меня возникают проблемы с отправкой писем от моего TCP-клиента. Я могу получить электронные письма для отправки на любые или Yahoo
email, но я не могу заставить их отправлять письмо, которое было создано на Microsoft Exchange Server
(доступ через приложение Outlook
), и я не знаю почему.Отправка писем в Gmail, Yahoo, Outlook
Вот код, который я использую для отправки электронной почты в настоящее время:
public void SendEmail(byte[] request)
{
using (TcpClient client = new TcpClient(this.Hostname, this.Port))
{
using(var stream = client.GetStream())
{
stream.Write(request, 0, request.Length);
stream.Flush();
}
}
}
Это посылает его к Gmail
или Yahoo
но не Outlook
Байт [] запрос создается с помощью этой функции :
protected byte[] EncodeMessage(kMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
// Encode the message.
Asn1BerEncodeBuffer buffer = new Asn1BerEncodeBuffer();
message.Encode(buffer);
// Write the encoded message to a byte array.
byte[] result = null;
using (MemoryStream stream = new MemoryStream())
{
buffer.Write(stream);
result = stream.ToArray();
}
return result;
}
Где и kMessage
и Asn1BerEncodeBuffer
продлить Asn1Type
HostName - это IP Address
в виде строки клиентского сервера. Я также подтвердил, что могу отправить электронное письмо на адрес электронной почты на сервере обмена Outlook, используя Windows Powershell и тест telnet
, так что это похоже на мой код, который не позволяет его отправлять.
Есть ли причина, по которой я не могу использовать 'TcpClient'? Если нет, я предпочитаю придерживаться 'TcpClient'. И, если я могу отправить электронные письма в Exchange с помощью PowerShell, не будет ли он еще включен/включен? Честно говоря, я не знаю. –
Если вы можете отправлять электронную почту Exchange через SMTP с любым клиентом, чем это разрешено - хорошо. Вам все равно нужны специальные разрешения/аутентификация для Exchange, я думаю, что слишком много проблем, чтобы попытаться изобрести колесо здесь. Также я считаю, что этот код безопасности довольно сложный. SMTPClient сделает это за вас. – DrKoch