Я использую сокет для отправки почты из моего аккаунта Gmail на мой аккаунт Gmail, чтобы избежать SSL и аутентификации, но я не знаю, блокирует ли Gmail эти порты для TLS (из-за спама), потому что я ничего не получаютакже папка спама пуста.
Если у кого-то есть опыт в этой теме, я был бы благодарен.
int main() {
cout << "send mail" << endl;
char arr[] = "gmail-smtp-in.l.google.com";
char* ptrServer = arr;
char arr0[] = "someaddress@gmail.com";
char* ptrReceiver= arr0;
char arr1[] = "someaddress@gmail.com";
char* ptrSender = arr1;
char arr2[] = "- Some Data -";
char* ptrSubject = arr2;
char arr3[] = "Hello from the PC";
char* ptrMessage = arr3;
sendEmail(ptrServer, ptrReceiver, ptrSender, ptrSubject, ptrMessage);
cin >> arr;
return 0;
}
Вот функция, которую я использую для отправки почты (я не знаю точно, что вынужно отправить по TLS, я просто отправляю эту последовательность EHLO и STARTTLS)
void sendEmail(char * server, char * to, char * from, char * subject, char * message) {
SOCKET sockfd;
WSADATA wsaData;
hostent* host;
sockaddr_in dest;
char szSmtpServerName[64] = "";
int sent;
char line[256];
if (WSAStartup(0x202, &wsaData) != SOCKET_ERROR) {
if ((host = gethostbyname(server)) != NULL) {
memset(&dest, 0, sizeof(dest));
memcpy(&(dest.sin_addr), host->h_addr, host->h_length);
dest.sin_family = host->h_addrtype;
dest.sin_port = htons(25);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
connect(sockfd, (struct sockaddr*) & dest, sizeof(dest));
strcpy_s(line, "EHLO\n");
sent=send(sockfd, line, strlen(line),0);
Sleep(500);
strcpy_s(line, "STARTTLS\n");
sent = send(sockfd, line, strlen(line), 0);
Sleep(500);
strcpy_s(line, "MAIL FROM:<");
strncat_s(line, from, strlen(from));
strncat_s(line, ">\n", 3);
sent = send(sockfd, line, strlen(line), 0);
Sleep(500);
strcpy_s(line, "RCPT TO:<");
strncat_s(line, to, strlen(to));
strncat_s(line, ">\n", 3);
sent = send(sockfd, line, strlen(line), 0);
Sleep(500);
strcpy_s(line, "DATA\n");
sent = (send(sockfd, line, strlen(line), 0));
Sleep(500);
strcpy_s(line, "To: ");
strcat_s(line, to);
strcat_s(line, "\n");
strcat_s(line, "From: ");
strcat_s(line, from);
strcat_s(line, "\n");
strcat_s(line, "Subject: ");
strcat_s(line, subject);
strcat_s(line, "\n");
strcat_s(line, message);
strcat_s(line, "\r\n.\r\n");
sent = send(sockfd, line, strlen(line), 0);
Sleep(500);
strcpy_s(line, "quit\n");
sent = send(sockfd, line, strlen(line), 0);
Sleep(500);
}
}
closesocket(sockfd);
WSACleanup();
cout << "mail was sent" << endl;
}