邮件SMTP & ESMTP(命令行方式发送)

telnet mail.xxx.com 25
HELO mail.xxx.com

MAIL FROM:sender@xxx.com
RCPT TO: recver@xxx.com
DATA
Subject: =?utf-8?B?6YKu5Lu25rWL6K+V?=
From: "sender" <sender@xxx.com>
To: "recver" <recver@xxx.com>
MIME-Version: 1.0
Content-Type: text/html;
Content-Transfer-Encoding: 8bit


<html>
<head>
<title>Title of page</title>
</head>
<body>
<b>mail<b>
</body>
</html> 
.

=========ESMTP============

参考【http://blog.csdn.net/hsstc/article/details/8936066】

本人测试用的是HW内网的mail.huawei.com

-> 符号代表一个回车,即一次发送

本测试邮件发送发送的是一个加粗的字体


telnet mail.huawei.com 25 ->
EHLO mail.huawei.com ->
AUTH LOGIN ->
YzAwMTgyMzg5 ->
QzM4OS5DT00= ->
MAIL FROM:sender@xxx.com ->
RCPT TO: recver@xxx.com ->
DATA ->
Subject: =?utf-8?B?6YKu5Lu25rWL6K+V?=
From: "sender" <sender@xxx.com>
To: "recv" <recv@xxx.com>
MIME-Version: 1.0
Content-Type: text/html;
Content-Transfer-Encoding: 8bit


<html>
<head>
<title>Title of page</title>
</head>
<body>
<b>mail<b>
</body>
</html> 
.
 ->
quit ->



============SMTP-关于邮件编码的格式 ==============
http://blog.csdn.net/ljmwork/article/details/7871694


最近接触到网易的闪电邮客户端程序,发现它发邮件时,标题的编码方式与Foxmail不一样,如:


网易闪电邮:Subject: =?utf-8?B?6YKu5Lu25rWL6K+V?=
Foxmail: Subject: =?gbk?B?08q8/rLiytQ=?=


从网上收集了一些这方面的一些资源,整理如下:
邮件编码分了3段,=?和?=是开始和结束标记,中间的问号是间隔符
第一段:utf-8或者gbk,表示原来页面的编码方式
第二段:B是表示邮件的编码方式为base64

第三段:08q8/rLiytQ= 或者 6YKu5Lu25rWL6K+V 表示标题的内容,但是经过Base64编码了


================

/**
*   BASE64编码 来自CSDN某个人公布,版权未知
*/
const unsigned char BASE64_PADDING='=';  //输入数据不足3的倍数时输出字符后面填充'='号  
const unsigned char BASE64_CODE[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";  
//使用64字节的表  
void base64_encode(const void* pdata,const unsigned long data_size,void* out_pcode)  
{  
    const unsigned char* input=(const unsigned char*)pdata;  
    const unsigned char* input_end=&input[data_size];  
    unsigned char*       output=(unsigned char*)out_pcode;  
    for(;input+2<input_end;input+=3,output+=4)  
    {  
        output[0]=BASE64_CODE[   input[0] >> 2 ];  
        output[1]=BASE64_CODE[ ((input[0] << 4) | (input[1] >> 4)) & 0x3F];  
        output[2]=BASE64_CODE[ ((input[1] << 2) | (input[2] >> 6)) & 0x3F ];  
        output[3]=BASE64_CODE[   input[2] & 0x3F];  
    }  
    unsigned long bord_width=input_end-input;  
    if (bord_width==1)  
    {  
        output[0]=BASE64_CODE[   input[0] >> 2 ];  
        output[1]=BASE64_CODE[  (input[0] << 4) & 0x3F ];  
        output[2]=BASE64_PADDING;  
        output[3]=BASE64_PADDING;  
    }  
    else if (bord_width==2)
    {  
        output[0]=BASE64_CODE[   input[0] >> 2 ];  
        output[1]=BASE64_CODE[ ((input[0] << 4) | (input[1] >> 4)) & 0x3F ];  
        output[2]=BASE64_CODE[  (input[1] << 2) & 0x3F ];  
        output[3]=BASE64_PADDING;  
    }  
}   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值