c - 如何使用 c 套接字通过 postfix 发送电子邮件?

标签 c sockets postfix-mta

如何使用 c 套接字通过 postfix 发送电子邮件? 如何通过编程创建消息

struct sockaddr_in addr;
char message[] = "MAIL From: vladyslav@vladyslav-virtual-machine\n \"vladyslav@vladyslav-virtual-machine\"\n\"Test mail\"\n\"This is a test email\"";
char buf[512];
//creating socket

int sock = socket(AF_INET, SOCK_DGRAM , 0);
//address parameters

addr.sin_family = AF_INET;
//connection port
addr.sin_port = htons(8);

// Inet 127.0.0.1.
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);

sendto(sock, message, sizeof(message), 0, (struct sockaddr *)&addr, sizeof(addr));
close(sock);

最佳答案

找到解决方案

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>

int main(int argc, char** argv) 
{
    int i;
    struct sockaddr_in addr;
    //commands for server
    char* commands[] = {"eclo localhost\n", "mail from:test@example.com\n", "rcpt to:vladyslav@vladyslav-virtual-machine\n", "data\n", "Subject: Тест\n\nТест\n", "\n.\n", "quit\n"};



    //creating socket
    int sock = socket(AF_INET, SOCK_STREAM , 0);
    if(sock < 0)
    {
        perror("error with creation of socket");
        return -errno;
    }

    //parameters
    addr.sin_family = AF_INET;
    //port 25
    addr.sin_port = htons(25);

    // Inet 127.0.0.1.
    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);

    //connecting to server
    if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) == -1) 
    {
    perror("error with creation of socket");
        return -errno;
    }

    //sending commands
    for(i = 0; i < sizeof(commands) / 4; i++)
        send(sock, commands[i], strlen(commands[i]), 0);

    //closing connection
    close(sock);

    return (EXIT_SUCCESS);
}

关于c - 如何使用 c 套接字通过 postfix 发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27337528/

相关文章:

c - 函数返回 char 指针

java - 如何在 Java 中发送原始 SOAP 请求?

xcode - 从 swift osx 应用程序发送电子邮件

java - 如何编写java程序推送邮件

c - 实现 Com 端口终端的最简单方法。 ( Windows ,C)

c++ - C 中的 limit.h 未确认值

Python Web 服务器套接字

Java To iOS 客户端流读取垃圾字符

mysql - Exim Mysql转发相当于postfix的mysql-virtual-alias-maps.cf

c++ - 将图像序列转换为视频