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