15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Посылка электронной почты из приложения

Вот например, написали Вы какую-нибудь супер-пупер программку, и раздали её всем кому угодно, или второй вариант, хотите хоть как-то защитить свою программку. В обоих случая вы можете знать, на каком айпи адресе была запущена Ваша программа, по пришедшему сообщению в Ваш почтовый ящик :) Таким способом обычно пользуются программы-тряны, отправляющие их хозяину пароль несчастного пользователя.

  пример функции, посылающей электронное письмо
void SendMail(void)
{
  SOCKET nSMTPServerSocket;
  struct sockaddr_in smtp_address;
  int nConnect;
  int iLength;
  int iMsg = 0;
  int iEnd = 0;
  BYTE sBuf[4096];

  char *MailMessage[] =
  {
	"HELO axel.ru\r\n",
	"MAIL FROM:<vasya_pupkin@cool_mail.ru>\r\n",   // адрес отправителя
	"RCPT TO:<purpe@usa.net>\r\n",	               // адресок получателя
	"DATA\r\n",
	"Самое крутое сообщение!!!\r\n\r\n.\r\n",      // тело сообщения
	"QUIT\r\n",
	NULL
  };

  nSMTPServerSocket = socket(PF_INET, SOCK_STREAM, 0);

  if(nSMTPServerSocket != INVALID_SOCKET)  {
	smtp_address.sin_family = AF_INET;
   // далее вносим в структуру IP-адрес сервера, через который пойдёт письмо
	smtp_address.sin_addr.s_addr = inet_addr("212.96.192.1");
	smtp_address.sin_port = htons(25);

	nConnect = connect(nSMTPServerSocket, (PSOCKADDR)&smtp_address,
                                                          sizeof(smtp_address));

	if(nConnect)  {
	}
	else  {
	  do  {
	    iLength = recv(nSMTPServerSocket, (LPSTR)sBuf+iEnd, sizeof(sBuf)-iEnd, 0);
	    iEnd += iLength;
	    sBuf[iEnd] = '\0';
	    send(nSMTPServerSocket, (LPSTR)MailMessage[iMsg], strlen(MailMessage[iMsg]), 0);
	    iMsg++;
	  } while(MailMessage[iMsg]);
	}

	closesocket(nSMTPServerSocket);
  }
}