1】代码网上找找
2】编译过程:
2.1
交叉编译openssl-0.9.8k
2.2
./configure --prefix=(...)/output ,本来这里填上CC=arm-linux-gcc 什么的就可以了,但是这个包就是不 行,所有有下面的手工修改Makefile的工作。
2.3
vim ./dlib/Makefile
--------------------------------------------------------------------------------------------------------------------------------------
CC = arm-linux-gnueabi-gcc
CFLAGS = -g -O2 -Wall -W -DHAVE_LIBSSL -I. -I./src -I./include -I../include -I/root/Public/buildroot-2009.08/build_arm/openssl-0.9.8k/include -DHAVE_CONFIG_H
LDFLAGS =
LIBS = -L/root/Public/buildroot-2009.08/build_arm/openssl-0.9.8k -lcrypto -lcrypto -lssl -lnsl -lm
---------------------------------------------------------------------------------------------------------------------------------------
vim
./src/Makefile vim
./Makefile
同样修改
CC CFLAGS LIBS 等参数
3】make
& make
4】
注意 : gmail 需要tls/SSL的支持,所有要带上LIBSSL 的编译。
在启用了
TLS 后,直接发送 EHLO 就可以了 ,
在
static int ehlo(dsocket *sd, const char *domain) 中就不用再 readRespons()了 ,
所以结合函数 int
smtpStartTls(dsocket *sd) ,自己定义个 flag里面,if掉 readRespons(),
这样就不用等待socket
timeout,再发送HELO了,提高了发送速度。
5】SMTP/SSL
协议过程:
[<-]
220 mx.google.com ESMTP w12sm722711tib.10
[->]
EHLO smtp.gmail.com
[<-]
250 ENHANCEDSTATUSCODES
[->]
STARTTLS
[<-]
220 2.0.0 Ready to start TLS
[->]
EHLO smtp.gmail.com
[<-]
250 ENHANCEDSTATUSCODES
[->]
AUTH LOGIN
[<-]
334 VXNlcm5hbWU6
[->]
c29uZ2h1YXllZUBnbWFpbC5j b20=
[<-]
334 UGFzc3dvcmQ6
[<-]
235 2.7.0 Accepted
[->]
MAIL FROM:
[<-]
250 2.1.0 OK w12sm722711tib.10
[->]
RCPT TO:
[<-]
250 2.1.5 OK w12sm722711tib.10
[->]
DATA
[<-]
354 Go ahead w12sm722711tib.10
[->]
Received: by smtp.gmail.com (sSMTP sendmail emulation); Thu, 02 Oct 2008 03:32:40 +0800
[->]
From: "shyi"
[->]
Date: Thu, 02 Oct 2008 03:32:40 +0800
[->]
To: mr.farsight@gmail.com
[->]
Subject: testing ssmtp
[->]
User-Agent: Heirloom mailx 12.4 7/29/08
[->]
MIME-Version: 1.0
[->]
Content-Type: text/plain; charset=us-ascii
[->]
Content-Transfer-Encoding: 7bit
[->]
[->]
ssmtp.conf
[->]
.
[<-]
250 2.0.0 OK 1222889566 w12sm722711tib.10
[->]
QUIT
[<-]
6】gmail
端口和服务器地址
SMTP
默认端口 25
gmail:
465端口是SSL/TLS通讯协议的 内容一开始就被保护起来了 当然看不到原文咯
587端口是STARTTLS协议的 属于TLS通讯协议 只是他是在STARTTLS命令执行后才对之后的原文进行保护的!
地址:smtp.googlemail.com
7】如何调用:
email
-f jxx_zh@sina.com -n jsn_zhou -s Subject55 -r smtp.sina.com -p 25 -m login -a /tmp/x.jpg -u jxx_zhou -i 19xxd6 j_zu@xxx.com -cc jxxc_z@sina.com < /tmp/naming.conf
2】编译过程:
CC = arm-linux-gnueabi-gcc
CFLAGS = -g -O2 -Wall -W -DHAVE_LIBSSL -I. -I./src -I./include -I../include -I/root/Public/buildroot-2009.08/build_arm/openssl-0.9.8k/include -DHAVE_CONFIG_H
LDFLAGS =
LIBS = -L/root/Public/buildroot-2009.08/build_arm/openssl-0.9.8k -lcrypto -lcrypto -lssl -lnsl -lm