Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用计算机的情况下使用Arduino发送电子邮件?_Arduino_Communication_Microcontroller_Ethernet - Fatal编程技术网

如何在不使用计算机的情况下使用Arduino发送电子邮件?

如何在不使用计算机的情况下使用Arduino发送电子邮件?,arduino,communication,microcontroller,ethernet,Arduino,Communication,Microcontroller,Ethernet,我正在用我的电脑做实验。我也有一个朋友 我需要使用它们发送电子邮件,无需计算机(或任何其他设备;如智能手机等)的帮助。虽然我能找到几篇文章,但我找不到任何可接受的解决方案 我怎么做?因为我不要求将其用于任何特殊应用,所以您可以 对遗漏的细节做出任何假设。从以上评论中的讨论来看,您可能需要刚刚为您编写代码的人提供代码,或者您需要花时间了解组件并查找或制作组件 如果只对非标准数据包有用,他们就不会为这个平台制作以太网屏蔽。所以某个地方有人创建了某种级别的IP堆栈 不过,为了发送邮件,您需要学习SMT

我正在用我的电脑做实验。我也有一个朋友

我需要使用它们发送电子邮件,无需计算机(或任何其他设备;如智能手机等)的帮助。虽然我能找到几篇文章,但我找不到任何可接受的解决方案

我怎么做?因为我不要求将其用于任何特殊应用,所以您可以
对遗漏的细节做出任何假设。

从以上评论中的讨论来看,您可能需要刚刚为您编写代码的人提供代码,或者您需要花时间了解组件并查找或制作组件

如果只对非标准数据包有用,他们就不会为这个平台制作以太网屏蔽。所以某个地方有人创建了某种级别的IP堆栈

不过,为了发送邮件,您需要学习SMTP。几乎所有的互联网协议定义都是使用一种叫做(征求意见)的东西来定义的。因此,如果你谷歌SMTP RFC你会发现

是互联网工程特别工作组。许多网站上都会有这些文件的许多副本。由于互联网和这些协议的发展,在很多情况下,你会发现已经创建了一个RFC来取代以前的RFC。不使用版本号,但它有点像HTML1.0,然后是HTML2.0等等。我建议,即使RFC说它完全取代了RFC xyz,也要找到RFC xyz并阅读它。我尽我所能回到过去,学习这一点,然后继续前进

许多/大多数协议(TCP是RFC中定义的另一个协议,稍后将详细介绍)都是基于ASCII的,这使得Telnet非常容易学习/试验该协议,您可能可以使用Telnet学习SMTP

大多数协议都是某种半双工协议,建立连接,通常服务器会向您发送一个字符串,您看到该字符串,然后发送某种hello字符串,服务器会以某种OK或fail状态响应。对于SMTP,您然后从这个电子邮件地址执行某种类型的“我正在发送邮件”,服务器说“好”,您说“我想发送这个人”或“这个人列表”,对于每个电子邮件地址,您都会得到“好”或“不好”。最后,您告诉服务器您已经准备好发送消息的主体,然后这样做,以定义的终止结束消息。然后要么服务器说OK,要么失败,要么可能还有更多的握手

不过,一般的协议都是这样来回的。通常,您使用命令发送字符串,服务器端通常会返回一个简短的OK或error。有时,如果他们愿意,他们会发回更多关于错误的详细信息,但总是从表示OK或error的几个字节开始。协议通常有一个流程,你必须先做这个,然后再做这个,然后再做那个

您应该学习sockets编程,有时称为sockets。如果您选择的平台是Windows sockets,那么您可以使用Windows sockets编写程序,这些程序大部分可以跨Unix移植,但也可以跨Windows移植。你需要先学习协议,它在你的台式机/笔记本电脑上更好,而不是嵌入式,你可以在那里更快地完成。使用套接字不必学习叉或螺纹。示例可能会显示,因为这样很容易显示,但您可以仅使用轮询编写完整的应用程序,这是半双工发送内容,等等,发送内容,等等。对于这些简单的学习程序,提前一点时间来学习套接字,从那里,学习所有的协议

这是最简单的部分,最难的部分是TCP/IP协议栈。我不建议你在没有获得更多经验的情况下尝试,在你去那里的路上迈出一小步。例如,学习首先响应(另一个RFC协议,地址解析协议),然后响应(echo,ICMP协议的一个子集),然后响应基础(嗅探数据包),然后接收和生成数据包。TCP是比这更高的一个层次,更多的握手。它不是固定的数据包大小,它是流式传输,不需要代码对数据包进行操作,它是一个字节流,就像使用串行端口一样

做你自己的TCP堆栈是一件非常重要的事情,我不推荐,你需要找一个已经为Ethernet shield这个平台做过TCP/IP堆栈的人,然后使用它,无论他们使用什么或环境,都可以使用它。然后,利用您在台式机/笔记本电脑上使用该协议的经验,并加以应用


从上面的讨论中,如果您不想学习协议等,我认为您需要搜索Arduino Ethernet shield示例,看看是否有人做过发送电子邮件的事情。

您需要一个tcp/ip堆栈,然后邮件协议相当简单,有关协议,请参阅rfc for SMTP。tcp/ip协议栈是最难的部分,除非已经有一个或多个罐装解决方案,否则Arduino可能是发送或接收电子邮件的糟糕选择。如果你有DIY的想法,从:).+1@paulsm4中抽出一个字节作为你的建议,但目前我已经通过Arduino完成了。。希望有人能给我指点路..谢谢@dwelch,但我没有足够的时间来尝试(当然我会在空闲时间尝试)。我猜会有经验丰富的人。。喜欢一个完整(大致)的例子。@paulsm4正如我提到的,我正在用我的Arduino mega进行试验。没有任何特殊目的、事件等。。。所以,你可以假设最简单的事情。类似于当我按下连接到Arduino的按钮时,向我的电子邮件地址发送一封包含一些文字的电子邮件(“哇..它工作!!”)。或者更简单的。。然后,我将能够进一步挖掘更先进的应用程序后…感谢您的伟大的答案!好吧,我放弃。。我会努力独自面对这一切。实际上,我在使用你提到的一些(简单的)协议方面很有经验。但是,是的,我对TCP/IP协议栈没有太多的了解