Reputation: 2133
#include <winsock2.h>
#include <windows.h>
#include<stdio.h>
#pragma comment(lib, "Ws2_32.lib")
#include <iostream>
using namespace std;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow)
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1), &wsaData);
SOCKET Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(Sock == INVALID_SOCKET)
{
WSACleanup();
return INVALID_SOCKET;
};
LPHOSTENT hostEntry;
in_addr iaHost;
SOCKADDR_IN Addr_in;
Addr_in.sin_family=AF_INET;
Addr_in.sin_addr.s_addr=inet_addr("10.0.2.6");
Addr_in.sin_port=htons(25);
if ( connect(Sock,(LPSOCKADDR)&Addr_in,sizeof(struct Addr_in)) == SOCKET_ERROR)
{
WSACleanup();
return INVALID_SOCKET;
};
struct Email { LPSTR sender , recipient , message , subject; };
Email e = { "[email protected]" , "[email protected]" , "hi" , "joke"};
LPSTR lpszBuff = new char[500];
//LPSTR vin=new char[500];
recv(Sock,lpszBuff,500,0);
cout << lpszBuff;
sprintf(lpszBuff,"HELO Mail-Server\r\n");
send(Sock,lpszBuff,strlen(lpszBuff),0);
recv(Sock,lpszBuff,100,0);
cout << lpszBuff;
//for (int i = 0;i>=0; i++) {
sprintf(lpszBuff,"MAIL FROM: %s\r\n",e.sender);
send(Sock,lpszBuff,strlen(lpszBuff),0);
recv(Sock,lpszBuff,100,0);
sprintf(lpszBuff,"RCPT TO: %s\r\n",e.recipient);
send(Sock,lpszBuff,strlen(lpszBuff),0);
recv(Sock,lpszBuff,100,0);
sprintf(lpszBuff,"DATA\r\nFROM: <%s>\r\nSUBJECT: %s\r\n%s\r\n.\r\n",e.sender,e.subject,e.message);
send(Sock,lpszBuff,strlen(lpszBuff),0);
recv(Sock,lpszBuff,100,0);
//}
sprintf(lpszBuff,"QUIT");
send(Sock,lpszBuff,strlen(lpszBuff),0);
//recv(s,lpszBuff,100,0);
delete lpszBuff;
WSACleanup();
exit(0);
}
This is a program to send mail to mailserver whose address is given
It gives me error
error C2027: use of undefined type 'WinMain::Addr_in'..
Upvotes: 0
Views: 185
Reputation: 993901
You've got the following expression:
sizeof(struct Addr_in)
Either you want
sizeof(Addr_in)
or
sizeof(SOCKADDR_IN)
As it stands now, your code does not have a struct
type called Addr_in
.
Also, in the future, please don't forget to include the line number in the error message, and indicate which actual line in the source code this refers to. You should be doing this yourself as a matter of course, but it also helps us when we go to try to answer your question.
Upvotes: 3