我正在尝试构建一个自动电子邮件发件人,它发送游戏服务器的ms统计信息,还用于通知服务器管理员有关潜在的骗子和问题。服务器修改目前是一个C ++ DLL,虽然稍后我更有经验时,我打算制作一个GUI专用服务器应用程序。
电子邮件将每5小时发送一次(服务器管理员可以通过配置设置进行更改)以及报告播放器并添加成员(以获取服务器内的权限)。
我已经对Google进行了简要介绍,我只能找到外部库。 是否可以在没有其他第三方库的情况下发送电子邮件? 那么,要求会是什么?将使用DLL的应用程序在Windows Server 2008(或Windows 7)或更高版本上运行,并且可以在各种Internet类型上运行。
这可以在没有安装SMTP服务器的情况下完成吗?
答案 0 :(得分:1)
必须将电子邮件发送到 SMTP服务器,即接收方的SMTP服务器。有两种方法可以实现此目的:通过与本地SMTP服务器通信,或者自己充当SMTP服务器。
在后一种情况下,您必须连接到其他SMTP服务器,说服他们您不是垃圾邮件发送者,并且仍然会发送大量自动生成的电子邮件。应该明确的挑战(!)
答案 1 :(得分: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="rameshgoli@example.com";
char *to_id="rameshgoli@example.com";
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);
}