我刚开始学习socket编程并了解winsock并取得了一些进展。我的问题基本上是:我想发送电子邮件,我该怎么办?
要点:
以下是我目前阅读的网页链接:
基本winsock指南:http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs.85).aspx
我已经阅读了beej指南的前14页(无法发布链接,新用户最多只能发布两个超链接)
我了解了类型(WSADATA
,addrinfo structure
,sockaddr
,SOCKET
)和函数(WSAStartup()
,WSACleanup()
,{ {1}},getaddrinfo()
,Shutdown()
,WSAGetLastError()
,...)
我刚刚开始阅读有关socket()
http://www.faqs.org/rfcs/rfc821.html
这是我到现在所写的内容:
SMTP
我离开了吗?
答案 0 :(得分:4)
您应该阅读如何在telnet上使用smtp。之后,您可以轻松实现它..
答案 1 :(得分:3)
你应该看看some examples on smtp via telnet:)
基本上你需要用明文输入这样的东西:
HELO local.domain.name
MAIL FROM: mail@domain.ext
RCPT TO: mail@otherdomain.ext
DATA
...
根据{{3}} 编辑,您的代码应为:
// Not sure about this one, maybe just "\n"
#define SEPARATOR "\n\r"
int sendData( Socket *socket, const char *data) {
int iResult;
iResult = send(socket, data, (int) strlen(data), 0);
if(iResult == SOCKET_ERROR){
// Do error handling as you like
}
return iResult;
}
sendData( socket, "HELO local.doman.name" SEPARATOR);
sendData( socket, "MAIL FROM: mail@domain.ext" SEPARATOR);
sendData( socket, "RCPT TO: mail@otherdomain.ext" SEPARATOR);
sendData( socket, "DATA" SEPARATOR);
sendData( socket, "This is subject of my mail" SEPARATOR SEPARATOR);
sendData( socket, "And this is text" SEPARATOR);
sendData( socket, "." SEPARATOR); // Send mail
答案 2 :(得分:2)
答案 3 :(得分:0)
RFC 5321是基本SMTP协议的官方规范。
RFC 2822是基本电子邮件格式的官方规范。
请注意,有许多其他RFC可以扩展基本规则。例如,RFC 1651扩展了SMTP,因此可以实现其他功能,例如通过AUTH extension进行安全身份验证。和MIME(RFC 2045,2046,2047,2048和2049)通常用于现代电子邮件系统,以允许附件,HTML / RTF,等
转到IETF's website查看大多数Interpet协议使用的所有可用RFC规范。
答案 4 :(得分:0)
bytes_to_receive = sizeof(packet)
received_bytes = 0; 做{ received_bytes + = recv(buffer + received_bytes,bytes_to_receive - received_bytes) } while(received_bytes!= bytes_to_receive)