我遇到了从我的TCP客户端发送电子邮件的麻烦。我可以收到要发送到任何Gmail
或Yahoo
电子邮件的电子邮件,但我无法将其发送到Microsoft Exchange Server
上创建的电子邮件(通过Outlook
访问app)我不知道为什么。
以下是我目前用于发送电子邮件的代码:
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
通过此函数创建byte []请求:
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
。我还确认我可以使用Windows Powershell和telnet
测试向outlook Exchange服务器上的电子邮件地址发送电子邮件,因此我的代码中似乎不允许发送电子邮件。< / p>
答案 0 :(得分:0)
您应该使用SMTPClient发送电子邮件。这也能够正确地进行所有身份验证。
此外,您必须在Exchange中安装/启用SMTP通道。
答案 1 :(得分:0)
另请注意,默认情况下,Exchange仅在通过SMTP发送时接受TLS连接。