如何使用c++; 如何使用C++将文件发送到指定的电子邮件? 注意:internet上有很多代码,它们需要在用户计算机上安装一些特殊的windows dll才能运行,但我想要的代码不需要在用户计算机上运行除windows dll以外的任何其他dll。

如何使用c++; 如何使用C++将文件发送到指定的电子邮件? 注意:internet上有很多代码,它们需要在用户计算机上安装一些特殊的windows dll才能运行,但我想要的代码不需要在用户计算机上运行除windows dll以外的任何其他dll。,c++,email,dll,email-attachments,C++,Email,Dll,Email Attachments,“C++”本身没有用于发送邮件的API。Windows具有“MAPI”API: 但是,如果您试图避免依赖关系,您的最低限度选择是打开到SMTP服务器的连接(ip.add.re.ss端口25)并将邮件传递给它。最低限度的“发送邮件”程序结构如下所示: #include <winsock2.h> #include <ws2tcpip.h> #pragma comment(lib, "Ws2_32.lib") #include <string> using

“C++”本身没有用于发送邮件的API。Windows具有“MAPI”API:

但是,如果您试图避免依赖关系,您的最低限度选择是打开到SMTP服务器的连接(ip.add.re.ss端口25)并将邮件传递给它。最低限度的“发送邮件”程序结构如下所示:

#include <winsock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "Ws2_32.lib")

#include <string>  
using std::string;

static void InitializeWinSock()
{
    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) {
        MessageBox(NULL, "Unable to initialize WinSock", "Initialization Error", MBICON_ERROR | MB_OK);
        exit(0);
    }
}

SOCKET openSocketToServer(const std::string& addr, int port)
{
    // open socket ...
}

#define MAIL_SERVER_IP "127.0.0.1"
#define MAIL_SERVER_PORT 25

void sendMail(const string& mailTo, const string& mailFrom, const string& subject, const string& body)
{
    InitializeWinSock();

    SOCKET servSock = openSocketToServer(MAIL_SERVER_IP, MAIL_SERVER_PORT);

    sendToSock(servSock, "HELO sender", "");
    sendToSock(servSock, "MAIL FROM: ", mailFrom.c_str());
    sendToSock(servSock, "RCPT TO: ", mailTo.c_str());
    sendToSock(servSock, "DATA", "");
    sendToSock(servSock, "From: ", mailFrom.c_str());
    sendToSock(servSock, "To: ", mailTo.c_str());
    sendToSock(servSock, "Subject: ", subject);
    sendToSock(servSock, "", ""); // blank line.
    sendToSock(servSock, body.c_str(), "");
    sendToSock(servSock, ".", "");
    sendToSock(servSock, "quit", "");
}
#包括
#包括
#pragma注释(lib,“Ws2_32.lib”)
#包括
使用std::string;
静态void初始化winsock()
{
WSADATA WSADATA;
int-iResult=WSAStartup(MAKEWORD(2,2)和wsaData);
如果(iResult!=0){
MessageBox(NULL,“无法初始化WinSock”,“初始化错误”,MBICON_错误| MB_确定);
出口(0);
}
}
套接字openSocketToServer(const std::string&addr,int-port)
{
//打开插座。。。
}
#定义邮件服务器IP“127.0.0.1”
#定义邮件服务器端口25
void sendMail(常量字符串和mailTo、常量字符串和mailFrom、常量字符串和主题、常量字符串和正文)
{
初始化winsock();
SOCKET servSock=openSocketToServer(邮件服务器IP、邮件服务器端口);
sendToSock(servSock,“HELO sender”和“);
sendToSock(servSock,“邮件发件人:”,mailFrom.c_str());
sendToSock(servSock,“RCPT TO:”,mailTo.c_str();
sendToSock(servSock,“DATA”和“);
sendToSock(servSock,From:,mailFrom.c_str());
sendToSock(servSock,“To:”,mailTo.c_str();
sendToSock(servSock,“主题:”,主题);
sendToSock(servSock,“,”);//空行。
sendToSock(servSock,body.c_str(),“”);
sendToSock(servSock,“.”,“);
sendToSock(servSock,quit,quit);
}

C++本身没有内置API。如果您想获得低级别,可以使用套接字直接编码到POP3接口,前提是您的邮件服务器支持该接口