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