将电子邮件发送到Gmail,Yahoo,Outlook

时间:2015-04-08 16:30:18

标签: c# email outlook .net-4.5

我遇到了从我的TCP客户端发送电子邮件的麻烦。我可以收到要发送到任何GmailYahoo电子邮件的电子邮件,但我无法将其发送到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();
        }
    }
}

这会将其发送到GmailYahoo但不会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;
}   

kMessageAsn1BerEncodeBuffer都延伸Asn1Type

HostName是客户端服务器的字符串形式的IP Address。我还确认我可以使用Windows Powershell和telnet测试向outlook Exchange服务器上的电子邮件地址发送电子邮件,因此我的代码中似乎不允许发送电子邮件。< / p>

2 个答案:

答案 0 :(得分:0)

您应该使用SMTPClient发送电子邮件。这也能够正确地进行所有身份验证。

此外,您必须在Exchange中安装/启用SMTP通道。

答案 1 :(得分:0)

另请注意,默认情况下,Exchange仅在通过SMTP发送时接受TLS连接。