我正在尝试模拟一些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接口而不是无线接口连接。
答案 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解析地址并执行ping
或lookup
一样,它将使用界面可以到达那个地址。
此外,请确保您使用的中继正在使用端口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将其删除。