Отправка e-mail через Ethernet модуль 28j60

Тема в разделе "Arduino & Shields", создана пользователем Zazamuh, 18 фев 2015.

  1. Zazamuh

    Zazamuh Нуб

    Добрый день!

    Прошу помощи в отправки почты через этот модуль:

    Нашел иностранный ресурс, пробовал их библиотеку, но на пример SMTP Client из библиотеки ругается:

    Код (Text):
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:73:25: error: UIPEthernet.h: No such file or directory
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:74:23: error: UIPClient.h: No such file or directory
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:75:23: error: UIPServer.h: No such file or directory
    Кто-нибудь заморачивался?
     
  2. X-Dron

    X-Dron Гик

    читайте installation.txt в Fullip/doc
     
  3. Zazamuh

    Zazamuh Нуб

    Поставил и ее то же. Если она стоит в отдельной папке - ругается так же.
    Если требуемые файлы закинуть в папку с библиотекой Fullip то пишет во это:
    Код (Text):

    In file included from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:73,
                    from SmtpClient.ino:35:
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:28:27: error: ethernet_comp.h: No such file or directory
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:32:37: error: utility/Enc28J60Network.h: No such file or directory
    In file included from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:33,
                    from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:73,
                    from SmtpClient.ino:35:
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:26:28: error: utility/mempool.h: No such file or directory
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:29:26: error: utility/uip.h: No such file or directory
    In file included from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:73,
                    from SmtpClient.ino:35:
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:35:20: error: UIPUdp.h: No such file or directory
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:39:31: error: utility/uip_timer.h: No such file or directory
    In file included from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:33,
                    from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:73,
                    from SmtpClient.ino:35:
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:49: error: 'memhandle' does not name a type
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:55: error: 'memhandle' does not name a type
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:56: error: 'memhandle' does not name a type
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:57: error: 'memaddress' does not name a type
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:91: error: 'UIP_CONNS' was not declared in this scope
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:97: error: 'memhandle' has not been declared
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:98: error: 'memhandle' has not been declared
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPClient.h:99: error: 'memhandle' has not been declared
    In file included from E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/FullIP.h:73,
                    from SmtpClient.ino:35:
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:85: error: 'memhandle' does not name a type
    E:\Arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Fullip/UIPEthernet.h:86: error: 'memhandle' does not name a type
     
  4. X-Dron

    X-Dron Гик

    Учитесь импортировать библиотеки.
    http://wiki.amperka.ru/программирование:библиотеки
    со слов:
    Сторонние библиотеки

    Скачанные библиотеки должны находиться в по пути <Документы пользователя>\Arduino\libraries
    Если копируете ручками, то копировать нужно все, со всеми папками.
    У Вас ругается на отсутствие ethernet_comp.h, хотя он есть в корне библиотеки, Enc28J60Network.h, который находится в папке "utility". Ну и так далее
     
  5. Zazamuh

    Zazamuh Нуб

    Разобрался, код должен иметь следующий вид, при условии, что все библиотеки в одной папке:
    Код (Text):
    #include <UIPEthernet.h>
    #include <SD.h>
    #include <FullIP.h>
    #include <MemoryFree.h>

    SmtpClient smtpclient;
    unsigned long next;
    //char server_name[] = "smtp.isp.mine";
    //The name of your SMTP server
    char server_name[] = "smtp.yandex.ru";
    //The domain that your emails will come from
    char domain_name[] = "yandex.ru";
    //The sender
    char from[] = "zazamuh@yandex.ru";
    //The receiver
    char to[] = "zazamuh@yandex.ru";
    //The subject
    char subject[] = "This is the subject";
    //And the body
    char body[] = "And here is the body";

    void setup() {

      Serial.begin(115200);
      Serial.println("[SmtpClient]");

      uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
      Ethernet.begin(mac);

      Serial.print("localIP: ");
      Serial.println(Ethernet.localIP());
      smtpclient.begin(server_name,domain_name);
      next = 0;
      delay(500);
    }

    void loop() {
      //Call this function in your loop to send message in the "background"
      smtpclient.maintain();

      if (((signed long)(millis() - next)) > 0)
        {
          Serial.print("freeMemory()=");
          Serial.println(freeMemory());
          if (smtpclient.isSent()) {
              Serial.println("Message was sent");
          } else {
              Serial.println("Message was NOT sent");
          }
          next = millis() + 10000;
          Serial.println("SMTP Client try to connect to server");
          if (smtpclient.sendMail(from,to,subject,body)==1)
            {
              Serial.println("Message is in queue");
            }
          else
            Serial.println("Can't connect to server");
        }
    }
    Но этот сучий сын не поддерживает авторизацию!!! :(
    Код (Text):
    * This SMTPClient example gets its local ip-address via dhcp and send
    * emails every 10 seconds.
    * Actually, there is no support for auth mechanism.
    *
    Вот не сволочь?!
    Знает кто-нибудь как отправить мыло без авторизации? Пусть за небольшие деньги.
     
  6. Zazamuh

    Zazamuh Нуб

    Нашел вот такой коммент в библиотеке, подскажите, что он значит? Можно как-то врубить аутентификацию?

    Код (Text):
    /// Initialize the smtp client.
    /// @param aSMTPServer the IPAddress of the SMTP server.
    /// @param domainstr the domain to use to send emails.
    /// @param authstr the auth string to use to authenticate.
    /// @return 1 if the operation succeed. 0 if it fails.
        uint8_t begin(const IPAddress& aSMTPServer, const char *domainstr, const char *authstr);

    /// Initialize the smtp client.
    /// @param aSMTPHost the host name of the SMTP server.
    /// @param domainstr the domain to use to send emails.
    /// @param authstr the auth string to use to authenticate (use the following command
    /// to generate it : perl -MMIME::Base64 -e 'print encode_base64("\000myuser\@yourisp.com\000password")').
    /// @return 1 if the operation succeed. 0 if it fails.
        uint8_t begin(const char *aSMTPHost, const char *domainstr, const char *authstr);