Pessoal, tenho um código que peguei aqui do site inclusive (http://labdegaragem.com/forum/topics/enviar-e-mail-de-alerta-com-et...)
E estou com dificuldades para fazer o mesmo funcionar!
//Incluindo a biblioteca EtherCard
#include <EtherCard.h>
#include <EthernetClient.h>
#include <SPI.h>
//Setando Mac do EtherCard
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0X30,0X31 };
//Setando Ip do EtherCard
static byte myip[] = {192,168,1,110};
static byte gwip[] = {192,168,1,1};
static byte dnsip[] = {187,45,96,96};
//Buffer máximo de dados que vão ser guardados
byte Ethernet::buffer[500];
EthernetClient client;
void setup() {
//Definindo a porta para MonitorSerial
Serial.begin(57600);
//Print teste
Serial.println("[Teste]");
//Faz conexão com a placa na CS vai na PORTA 10 do Arduino, se tudo correr bem vai retornar diferente de 0
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println("Não foi possivel conectar com o EtherCard");
else
Serial.println("Conectado com sucesso ao EtherCard");
//Inserindo o Endereço de IP.
// ether.staticSetup(myip, gwip, dnsip);
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
}
void loop() {
word pos = ether.packetLoop(ether.packetReceive());
// delay(500);
byte EntradaSerial;
EntradaSerial = Serial.read();
if(EntradaSerial == 'e'){
envia();
}
}
void envia()
{
delay(1000);
Serial.println("Conectando");
if (client.connect("187,45,96,10", 587))
{
Serial.println("Conectado");
client.println("HELO localhost");
recebe();
delay(1000);
client.println("AUTH LOGIN");
recebe();
delay(1000);
client.println("XXX"); // Email de login em base de 64: http://base64-encoder-online.waraxe.us/
recebe();
delay(1000);
client.println("XXX"); // Senha do email em base de 64: http://base64-encoder-online.waraxe.us/
recebe();
delay(1000);
client.println("mail from: <vb@mhnet.com.br>"); //Email remetente
recebe();
delay(1000);
client.println("rcpt to: <vinicius_back@hotmail.com>"); // Email destinatário
recebe();
delay(1000);
client.println("data");
recebe();
delay(1000);
client.println("Subject: Teste BYTE IP de Email!"); // Assunto
recebe();
delay(1000);
client.println("Testando email com arduino 2"); // Corpo
recebe();
delay(1000);
client.println("."); // Indica fim do email.
recebe();
delay(1000);
client.println();
recebe();
delay(1000);
Serial.println("email enviado!");
delay(1000);
if (client.connected()){ // Desconecta pra deixar pronto para novo envio.
Serial.println();
Serial.println("desconectando...");
client.stop();
Serial.println();
Serial.println();
}
}
else
{
Serial.println("connection failed");
}
Serial.println("Ready. Press 'e' to connect.");
}
void recebe()
{
while (client.available())
{
char c = client.read();
Serial.println(c);
}
}
########################################
Na saída do serial monitor ele até diz que o e-mail for enviado mas quando verifico na caixa de entrada não tem nada.
Outra coisa que não estou conseguindo entender, é a função recebe(), que no meu entendimento teria que retornar as respostas do servidor, seguindo um tutorial de telnet ("http://pt.wikihow.com/Enviar-um-Email-Usando-a-Telnet"), deveriam aparecer as seguintes respostas vindas do servidor!
Esse tutorial foi baseado em EthernetShield, e eu estou usando EtherCard.
Saída do Serial Monitor
[Teste]
Conectado com sucesso ao EtherCard
IP: 192.168.1.102
GW: 192.168.1.1
DNS: 187.45.96.96
Conectando
Conectado
email enviado!
Ready. Press 'e' to connect.
Obrigado a todos!
Att ViniciuS
Tags:
esse codigo nao vai funcionar pq as sintaxes sao da biblioteca usada para o ethernet shield w5100
eu uso a biblioteca ETHER_28j60
nela vc usa por ex. a funçao ethernet.print no lugar de client.print
e a inicializaçao da comunicaçao com a rede eh diferente tb
entao aconselho rever as sintaxes para esse seu shield
bons projetos!!!!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por