【SMTP】Linux下C++实现smtp邮件发送

LeonTown LeonTown 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用linux下C++写的smtp的邮件发送程序,
但是运行时提示连接不上。
代码如下:


#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <string>

using std::string;

int Connect(const string& host)
{
int sock = 0;

struct hostent * remoteHost;
if ((remoteHost = gethostbyname(host.c_str())) == 0)
{
printf("get host failed:%s\n", host.c_str());
return 0;
}

struct sockaddr_in pin;
memset(&pin, 0, sizeof(pin));
pin.sin_family = AF_INET;
pin.sin_port = htons(25);
pin.sin_addr.s_addr = ((struct in_addr *)(remoteHost->h_addr))->s_addr;

printf("remote host ip:%s, %u\n", remoteHost->h_addr, pin.sin_addr.s_addr);

if((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("create socket failed\n");
return 0;
}

if (connect(sock, (const sockaddr*)&pin, sizeof(pin)) == -1)
{
printf("connect failed\n"); // 这里提示连接失败!
return 0;
}

return sock;
}

int main(int argc, const char** argv)
{
int sock = Connect("mail.google.com");
if (sock == 0)
{
return 1;
}
printf("Connect succeed:%d\n", sock);

string fromAddr = "xxx@gmail.com";
string msg;
msg = "mail from:<";
msg.append(fromAddr);
msg.append(">\n");

string toAddr = "xxx@gmail.com";
msg.append("rcpt to:<");
msg.append(toAddr);
msg.append(">\n");

string subject = "ttttt";
string content = "aaaaa";
msg.append("data\n");
msg.append("subject:");
msg.append(subject);
msg.append("\n\n");
msg.append(content);
msg.append("\n.\n");

if (send(sock, msg.c_str(), msg.length(), 0) == -1)
{
printf("send fetching request failed\n");
return 1;
}

char recvBuf[1024];
int l = recv(sock, recvBuf, 1023, 0);
printf("recv len:%d\n", l);
printf("%s\n", recvBuf);

return 0;
}


请教,为什么那个connect连接失败呢?
...全文

相关推荐

评论 28
收藏 已收藏
分享
返回顶部
LeonTown
C++ 语言 65,214 成员 250,514 内容