社区
网络编程
帖子详情
有关SMTP认证的问题
wangyoucao2003
2007-04-16 11:05:17
正在做一个有关SMTP协议的程序,可是当发送MAIL命令时,却返回553错误说是authentication is required,但我翻查RFC821没有相关的说明啊。到底怎么回事?好像有前辈说是要验证,那么相关的命令是什么?谢谢
...全文
347
9
打赏
收藏
有关SMTP认证的问题
正在做一个有关SMTP协议的程序,可是当发送MAIL命令时,却返回553错误说是authentication is required,但我翻查RFC821没有相关的说明啊。到底怎么回事?好像有前辈说是要验证,那么相关的命令是什么?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hanxing_c
2008-09-09
打赏
举报
回复
up
caitian6
2007-05-12
打赏
举报
回复
up
wangyoucao2003
2007-04-18
打赏
举报
回复
cocogkx 你的代码我运行了下,但是不知道为什么返回了错误:
aa.obj : error LNK2001: unresolved external symbol __imp__send@16
aa.obj : error LNK2001: unresolved external symbol __imp__recv@16
aa.obj : error LNK2001: unresolved external symbol __imp__connect@12
aa.obj : error LNK2001: unresolved external symbol __imp__htons@4
aa.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
aa.obj : error LNK2001: unresolved external symbol __imp__socket@12
aa.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
aa.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
Debug/xia.exe : fatal error LNK1120: 8 unresolved externals
Error executing link.exe.
可能是那些文件没有连接?
wangyoucao2003
2007-04-18
打赏
举报
回复
我发送了AUTH命令到服务器的,但是返回了错误码535。我不知道我用户名加密后是不是正确的。xiaoxiaoxiaxia是我的用户名。加密后是eGlhb3hpYW94aWF4aWE=。现在不能确定是正确的还是错误的
danscort2000
2007-04-17
打赏
举报
回复
auth 指令
自己查一下吧,是采用BASE 64编码的
现在基本没有OPEN SMTP了,所以在发送邮件前必须使用AUTH登录到服务器
cocogkx
2007-04-17
打赏
举报
回复
代码如下
//注意加载ws2_32.lib
#include <Winsock2.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#define BUFFER_BLOCK_SIZE 409600
static char basis_64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
char * base64_encode(const unsigned char *value, int vlen);
char *base64_encode(const char *value, int vlen) {
unsigned char oval = 0 ;
char *result = (char *)malloc((vlen * 4) / 3 + 5) ;
char *out = result;
while (vlen >= 3) {
*out++ = basis_64[value[0] >> 2];
*out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)];
*out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)];
*out++ = basis_64[value[2] & 0x3F];
value += 3;
vlen -= 3;
}
if (vlen > 0) {
*out++ = basis_64[value[0] >> 2];
oval = (value[0] << 4) & 0x30 ;
if (vlen > 1) oval |= value[1] >> 4;
*out++ = basis_64[oval];
*out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C];
*out++ = '=';
}
*out = '\0';
return result;
}
int main()
{
char buffer[BUFFER_BLOCK_SIZE];
char name[]="此处换成你的姓名";
char encodename[13];
strcpy(encodename,base64_encode(name,strlen(name)));
char pass[]="此处换成你的密码";
char encodepass[13];
strcpy(encodepass,base64_encode(pass,strlen(pass)));
char login[]="auth login";
char from[]="mail from: <此处换成你的邮箱>";
char to[]="rcpt to: weiyanwu@21cn.com";
char data[]="data";
char message[]="Hello,Nice to meet you!\r\n.\r\n";
char quit[]="quit";
SOCKADDR_IN addrSrv;
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
for(int i=0;i<2;i++)
{
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
addrSrv.sin_addr.S_un.S_addr=inet_addr("此处换成你的SMTP邮箱服务器的IP");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(25);
connect(sock,(const sockaddr*)&addrSrv,sizeof(sockaddr));
//1. welcome words
SOCKET retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//2. EHLO
sprintf(buffer,"HELO 127.0.0.1\r\n");
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//3. login
sprintf(buffer,"%s\r\n",login);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//4.发送加密后的姓名
sprintf(buffer,"%s\r\n",encodename);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//5.发送加密后的密码
sprintf(buffer,"%s\r\n",encodepass);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//6.发信人地址
sprintf(buffer,"%s\r\n",from);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//7.收信人地址
sprintf(buffer,"%s\r\n",to);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//8.正文
sprintf(buffer,"%s\r\n",data);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
//9.正文内容
sprintf(buffer,"%s",message);
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
sprintf(buffer,"quit\r\n");
cout<<buffer;
send(sock,buffer,strlen(buffer),0);
retCode=recv(sock,buffer,BUFFER_BLOCK_SIZE,0);
buffer[retCode]='\0';
cout<<buffer;
}
return 0;
}
xujianlane
2007-04-16
打赏
举报
回复
http://bbs.letuo.com/printpage.asp?BoardID=16&ID=1814
中文的可以参照
xujianlane
2007-04-16
打赏
举报
回复
RFC2554
tszzp
2007-04-16
打赏
举报
回复
是SSL连接吗?如果是的话,你需要使用OpenSSL等来开发了。
C#+基于
SMTP
认证
C#+基于
SMTP
认证
,有源码,有调用实例
SMTP
Service Extension (
SMTP
服务
认证
拓展)
SMTP
服务
认证
拓展,
SMTP
身份
认证
原理分析。
SpringBoot2+Mail邮件发送系统(邮箱专题)
SMTP
协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
SMTP
服务器就是遵循
SMTP
协议的发送邮件服务器。
SMTP
认证
,简单地说就是要求...
EMAIL发送系统(C#+基于
SMTP
认证
)2.0[源文件]
EMAIL发送系统(C#+基于
SMTP
认证
)2.0[源文件]采用C#+VS2005实现邮件的发送管理。
支持
认证
、附件的.NET平台
SMTP
组件,(Kals)
目前.net平台下自带的
SMTP
组件不支持
SMTP
认证
,而网上其他一些
SMTP
组件也很少支持附件的(反正我是没有找到),为此,写了这个组件! 功能: 支持
SMTP
认证
,群发功能,支持多个附件发送,支持HTML格式. 带使用例子...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章