通过我的LAN界面通过C#发送电子邮件

时间:2011-02-15 14:38:12

标签: c# .net email

我正在尝试模拟一些ad hoc网络,我使用我的无线网卡连接到ad hoc网络,我希望能够在我从这个ad hoc网络获得一些触发器时向自己发送一些特定的消息。我的笔记本电脑通过Lan接口连接到互联网,并通过无线网卡连接到ad hoc网络。

这是我的代码:

 private void send_mail()
        {
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            message.To.Add("XXXXX@YYYY.com");
            message.Subject = "test";
            message.From = new System.Net.Mail.MailAddress("ZZZZZ@MMMMM.com");
            message.Body = "This is the message body";
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("a.b.c.d");
            smtp.Send(message);
        }

我想知道如何设置发送邮件的界面。 默认情况下,代码要使用我的无线网卡发送邮件,无法连接到smtp服务器,我收到错误 我希望我的send_mail()函数通过LAN接口而不是无线接口连接。

6 个答案:

答案 0 :(得分:1)

这是一个IP路由问题。您需要在计算机上设置路由,以通过WiFi接口直接访问a.b.c.d.

使用管理员权限打开命令提示符并使用route add命令。

答案 1 :(得分:1)

将LAN接口设置为默认网关,或将LAN接口设置为默认的连接/互联网连接。

操作系统必须首先使用LAN接口进行互联网连接。

答案 2 :(得分:0)

我想到的一个选项是阻止您不想发送的端口上的端口25 ... Ad-Hoc网络是否连接到Internet连接?如果没有,电子邮件应该通过您的有线网络连接....

答案 3 :(得分:0)

这超出SmtpClient的范围,就像你尝试使用命令promt解析地址并执行pinglookup一样,它将使用界面可以到达那个地址。

此外,请确保您使用的中继正在使用端口25.您可以先尝试使用telnet,如果可行,您应该可以使用SmtpClient连接到它。

答案 4 :(得分:0)

无法选择要使用的网卡。 在.NET中,您无法选择使用哪个网卡打开套接字进行网络通信。

答案 5 :(得分:0)

我认为这是关于如何在您的PC上设置网络的问题,所以在superuser.com上可能值得询问。

但是,如果没有其他功能,您可以在发送电子邮件之前暂时禁用无线连接,然后再重新启用它。假设您正在使用DHCP,您可以通过WMI执行此操作,此页面上的顶部示例显示了您can disable a network connection using WMI?的方式。如果你没有使用DHCP,那么仍然有办法做到这一点,但这有点困难。

如果您之前没有在C#中使用WMI,那么本文可能是一个很好的起点:WMI Made Easy For C#

或者以Serge的答案为出发点,您可以通过CreateIpForwardEntry以编程方式Route add进行{{1}},然后通过DeleteIpForwardEntry将其删除。