2013-11-20 5 views
-1

나는 gameserver의 ms 통계를 보내고 서버 관리자에게 잠재적 인 사기꾼 및 문제를 알리는 데 사용되는 자동화 된 전자 메일 보낸 사람을 구축하려고합니다. 서버 수정은 현재 C++ DLL입니다. 나중에 좀 더 경험이 많았 으면 GUI 전용 서버 응용 프로그램을 만들려고합니다.자동화 된 전자 메일 보낸 사람

전자 메일은 5 시간마다 한 번씩 (서버 관리자는 구성 설정을 통해 변경할 수 있음) 플레이어가보고되고 구성원이 추가되어 (서버 내의 권한을 얻기 위해) 전송됩니다.

Google에서 간략하게 살펴본 결과이 라이브러리는 외부 라이브러리입니다. 추가 타사 라이브러리가 없어도 이메일을 보낼 수 있습니까? 또한 요구 사항은 무엇입니까? DLL을 사용할 응용 프로그램은 Windows Server 2008 (또는 Windows 7) 이상에서 실행되며 다양한 인터넷 유형에서 실행될 수 있습니다.

SMTP 서버를 설치하지 않고도이 작업을 수행 할 수 있습니까?

+0

http://stackoverflow.com/questions/5926294/how-to-send-emails-using-yahoo-or- gmail-in-c – 4pie0

+0

@ piotruś 이것은 타사 사이트의 전자 메일 계정입니다. 실제 계정없이 전자 메일을 보내야합니다 (필자의 PHP 사이트에서 사용하기 때문에 가능합니다). 많은 사람들이 그것을 사용하기 때문에 다른 사람들로부터 쉽게 잠글 수있는 전자 메일 계정에 대한 액세스 권한을 사용자에게 부여하고 싶지 않기 때문입니다. – cybermonkey

+1

번호. 거기 smtp 서버에 연결하는 방법을 예제입니다, 당신은 단지 그것에 얘기해야합니다 – 4pie0

답변

1

이메일은 에서까지 수신자의 SMTP 서버로 보내야합니다. 이를 달성하는 방법은 두 가지가 있습니다. 하나는 로컬 SMTP 서버로, 다른 하나는 SMTP 서버로 직접 행동하는 것입니다.

후자의 경우 다른 SMTP 서버에 연결하고 스팸 발송자가 아님을 확인하고 자동으로 생성 된 여러 개의 전자 메일을 전달해야합니다. 그의 과제는 명확해야한다 예

+0

나만의 도메인에서 비공개 계정을 만들고이 계정을 통해 이메일을 보내려면 어떻게 작동합니까? – cybermonkey

+1

그래, 그 "자신의 도메인"은 "로컬 SMTP 서버가 설치되어"의미합니다. 그것은 당신을 대신하여 원격 SMTP 서버와 대화 할 것입니다. – MSalters

1

한 (!) :

#include<iostream> 
    #include <sys/types.h> 
    #include <sys/socket.h> 
    #include <netinet/in.h> 
    #include <netdb.h> 
    #include <stdio.h> 
    using namespace std; 
    #define HELO "HELO 192.168.1.1\r\n" 
    #define DATA "DATA\r\n" 
    #define QUIT "QUIT\r\n" 

    //#define h_addr h_addr_list[0] 
    //FILE *fin; 
    int sock; 
    struct sockaddr_in server; 
    struct hostent *hp, *gethostbyname(); 
    char buf[BUFSIZ+1]; 
    int len; 
    char *host_id="192.168.1.10"; 
    char *from_id="[email protected]"; 
    char *to_id="[email protected]"; 
    char *sub="testmail\r\n"; 
    char wkstr[100]="hello how r u\r\n"; 

    /*=====Send a string to the socket=====*/ 

    void send_socket(char *s) 
    { 
     write(sock,s,strlen(s)); 
     write(1,s,strlen(s)); 
     //printf("Client:%s\n",s); 
    } 

    //=====Read a string from the socket=====*/ 

    void read_socket() 
    { 
     len = read(sock,buf,BUFSIZ); 
     write(1,buf,len); 
     //printf("Server:%s\n",buf); 
    } 

    /*=====MAIN=====*/ 
    int main(int argc, char* argv[]) 
    { 

    /*=====Create Socket=====*/ 
    sock = socket(AF_INET, SOCK_STREAM, 0); 
    if (sock==-1) 
    { 
    perror("opening stream socket"); 
    exit(1); 
    } 
    else 
     cout << "socket created\n"; 
    /*=====Verify host=====*/ 
    server.sin_family = AF_INET; 
    hp = gethostbyname(host_id); 
    if (hp==(struct hostent *) 0) 
    { 
    fprintf(stderr, "%s: unknown host\n", host_id); 
    exit(2); 
    } 

    /*=====Connect to port 25 on remote host=====*/ 
    memcpy((char *) &server.sin_addr, (char *) hp->h_addr, hp->h_length); 
    server.sin_port=htons(25); /* SMTP PORT */ 
    if (connect(sock, (struct sockaddr *) &server, sizeof server)==-1) 
    { 
    perror("connecting stream socket"); 
    exit(1); 
    } 
    else 
     cout << "Connected\n"; 
    /*=====Write some data then read some =====*/ 
    read_socket(); /* SMTP Server logon string */ 
    send_socket(HELO); /* introduce ourselves */ 
    read_socket(); /*Read reply */ 
    send_socket("MAIL FROM: "); 
    send_socket(from_id); 
    send_socket("\r\n"); 
    read_socket(); /* Sender OK */ 
    send_socket("VRFY "); 
    send_socket(from_id); 
    send_socket("\r\n"); 
    read_socket(); // Sender OK */ 
    send_socket("RCPT TO: "); /*Mail to*/ 
    send_socket(to_id); 
    send_socket("\r\n"); 
    read_socket(); // Recipient OK*/ 
    send_socket(DATA);// body to follow*/ 
    send_socket("Subject: "); 
    send_socket(sub); 
    read_socket(); // Recipient OK*/ 
    send_socket(wkstr); 
    send_socket(".\r\n"); 
    read_socket(); 
    send_socket(QUIT); /* quit */ 
    read_socket(); // log off */ 

    //=====Close socket and finish=====*/ 
    close(sock); 
    exit(0); 
    } 
관련 문제