邮件传输接口洛奇英雄传返回邮件未知错误

1220人阅读
Hi35xx(20)
C语言代码见: & (这个代码不太好,图片为附件有些问题,不过,现已经解决了)
一、电子邮件的组成
& 在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。
&&&&信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP 命令指明。
&&& ① MAIL FROM:&发信人的地址&,告诉SMTP服务器发信人的地址。
&&& ② RCPT TO:&收信人的地址&,告诉SMTP服务器收信人地址。
&& & 首部中常用命令:
&&&& ① FROM :& 姓名&& 邮件地址& ,表明邮件发送者是谁。
&&&& ② TO :& 姓名&& 邮件地址& ,表明邮件接收者是谁。
&&&& ③ SUBJECT :& 邮件标题& ,表明邮件的主题。
&&&& ④ DATE :& 时间& ,表明发邮件的时间。
&&&& ⑤ REPLY-TO :& 邮件地址& ,表明邮件的回复地址。
&&&& ⑥ Content-Type :& 邮件类型& ,表明邮件包含文本、HTML 超文本和附件的哪些类型。
&&&& ⑦ X-Priority :& 邮件优先级& ,表明邮件的发送优先级。
&&&& ⑧ MIME-Version :& 版本& ,MIME 的意思是Multipurpose Internet Mail Extensions ,即多用途Internet 邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。
&&&&&&&正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。
4) 结束符号&
&&&&&& 邮件以“.” 结束。
二、与邮件服务器连接
1.与SMTP服务器的连接
&&& 使用命令格式:HELO&信息发送端的名称&
&&& 格式举例:HELO Local
2.与ESMTP服务器建立连接
&&& (1) 使用命令格式:EHLO&信息发送端的名称&
&&&&& 格式举例:EHLO Local
&&& (2) 启动服务器认证
&&&&& 命令格式:AUTH LOGIN
3.断开与服务器的连接
&&& 命令格式:QUIT
&&& 使用QUIT命令退出系统,断开与服务器的连接。
三、邮件的发送过程
&& 以与ESMTP服务器建立连接发送邮件为例。
1.客户端先与服务器建立连接
&&&&&& 1) 客户端发送EHLO Local
&&&&&& 2) 客户端发送AUTH LOGIN
&&&&&& 3) 客户端发送经过Base64编码处理的用户名
&&&&&& 4) 客户端发送经过Base64编码处理的密码
2.客户端开始发送邮件的信封
&&&&&& 5) 客户端发送 MAIL FROM:&发信人的地址&
&&&&&& 6) 客户端发送 RCPT TO:&收信人的地址&
3.客户端开始发送邮件数据
&&&&&&&&& 7) 客户端发送DATA
&&&&&&&&& 8) 客户端可以选择发送邮件的首部字段
&&&&&&&&& 9) 客户端发送一个空行表示邮件首部结束。
&&&&&&&& 10) 客户端开始发送正文。
&&&&&&&& 11) 客户端发送“.”表示邮件发送结束。
4.客户端先服务器断开连接
&&&&&&&& 12) 客户端发送QUIT表示断开连接。
四、SMTP Server返回值表&
五、C++语言实现(头文件)
/**************************************************************************************************************
**文件:Email.h
**编写者:huangminqiang
**编写日期:号
**简要描述:邮件发送头文件
**修改日期:
**注:注意extern &C& 和__cplusplus的用法
**************************************************************************************************************/
#ifndef __Email_H__
#define __Email_H__
typedef struct Email_info{
char* smtp_
char* sender_
char* sender_E
char* recv_E
char* attachment[10];
}Email_info_t;
#ifdef __cplusplus
#include &iostream&
#include &vector&
#include &string&
#include &stdio.h&
#include &string.h&
#include &assert.h&
#include &sys/types.h&
#include &sys/socket.h&
#include &sys/ioctl.h&
#include &netinet/in.h&
#include &arpa/inet.h&
#include &netdb.h&
#include &errno.h&
#ifdef __cplusplus
extern &C& {
#endif //__cplusplus
#define _DEBUG(msg...)
printf(&[ %s,%s, %d ]=&&,__FILE__, __FUNCTION__, __LINE__); printf(msg); printf(&\r\n&)
#define _ERROR(msg...)
printf(&[ error: %s, %d]=&&, __FILE__,
__LINE__); printf(msg); printf(&\r\n&)
#define SOCKET_ERROR
#define INVALID_SOCKET
#define BUFFER_SIZE
// 收发数据的大小:1M
#define BUFFER_CNT
// 附件中最大数据包的个数,附件不能超过5M = (BUFFER_SIZE) * (BUFFER_CNT)
typedef int SOCKET;
class Email
void AddAttachment(const char* path);
void AddTextMsg(const char* Text);
void Send();
void SetSubject(const char* );
void SetSenderName(const char* );
void SetSenderEmail(const char* );
void SetRecvEmail(const char* );
void SetUsername(const char* );
void SetPassword(const char* );
void SetSMTPServer(const char* server,const unsigned short port=0);
string SMTPSrvN
unsigned short SMTPSrvP
string EmailF
string EmailTo;
string NameF
string TextM
char* SendB
char* RecvB
vector&std::string& A
void ReceiveData();
void SendData();
int FormatHeader(char* );
int SmtpRecdigits();
SOCKET ConnectRemoteServer(const char* serverIP, const unsigned short port=0);
string base64_encode(unsigned char const*, unsigned int len);
int Email_send(Email_info_t );
#ifdef __cplusplus
#endif //__cplusplus
#endif //__cplusplus
#endif // __Email_H__
因为邮件发送只是一个模块而已,项目中涉及到C\C++混合编程问题,所以,强调了extern &C&和__cplusplus的作用。Email_info_t这个结构体的用途为提供对外的传参信息,通过int Email_send(Email_info_t )函数----C++对外的接口函数,C文档(*.c)中只需调用这个接口就ok了,而C++(*.cpp)接着把这些函数分别实现,然后,就可以实现邮件功能了。&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:261484次
积分:5372
积分:5372
排名:第3353名
原创:68篇
评论:429条
(1)(1)(4)(2)(1)(8)(4)(6)(4)(42)您的举报已经提交成功,我们将尽快处理,谢谢!
邮箱错误造成的,刷新试试
大家还关注
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'4719人阅读
pst文件修复
每天使用的Outlook2007 启动加载inbox时提示:”&邮件传输接口返回未知错误。如果问题仍然存在,请重新启动outlook“,导致inbox邮件list不能加载,但是不影响接收/发送邮件;但是重启多次此问题仍没有解决。
网上search了下,解决方案有:
这个问题大部分都是由于用户在本地的邮件pst文件超大导致pst文件被破坏所引起的,pst超过1.5GB,并且还挂在outlook上,导致问题出现。
解决方法如下:
1、先备份用户邮件数据。
2、重新建立用户配置文件,并且配置好OUTLOOK,暂时不挂载已经超大的pst文件。
3、新建一个pst文件,将被超大的pst中的邮件转移到新建的pst中。(不要在往这个pst中存放邮件了)
(refer from:&)
但是尝试此方法后并不生效,但是知道了pst文件超过1.5G后可能就有问题,查看我的pst文件 (默认保存位置在&C:\Users\Kevin\AppData\Local\Microsoft\Outlook\)也就200M,应该也不是pst文件大加载时出现问题导致的;但应该也是由于pst文件导致了此问题,尝试使用outlook安装目录下的pst修复程序修复pst文件(Scanpst.exe)修复了outlook目录下所有的pst文件,就能正常启动outlook并加载inbox的mails
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9040次
排名:千里之外}

我要回帖

更多关于 洛奇英雄传返回邮件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信