#from: http://blog.chinaunix.net/u/19742/showart_422492.html
# - * - coding: cp936 - * -
#! / usr/ bin/ env python
import sys, smtplib
"" "
使用smtp.sina.com作为邮件发送服务器
1.使用TLS进行加密
2.使用ehlo,如果服务器不支持,则无法使用TLS
3.调用starttls
4.再次调用ehlo
5.像往常一样发送邮件
" ""
server = "smtp.sina.com"
fromaddr= "jcodeer@sina.com"
toaddr = "jcodeer@126.com"
msg = "" "
to:%s
from:%s
Hello,I am smtp server
" "" % ( toaddr, fromaddr)
s = smtplib. SMTP( server)
# 进行认证,通过后可以发送邮件
s. login( "jcodeer" , "邮箱密码" )
"" "
ehlo返回值:
code:来自服务器的相应码。
string:这个响应码所对应的字符串描述。
" ""
code = s. ehlo( ) [ 0]
usesesmtp = 1
if not ( 200 < = code < = 299) :
usesesmtp = 0
"" "
code和string与ehlo含义相同。
" ""
code = s. helo( ) [ 0]
if not ( 200 < = code < = 299) :
raise SMTPHeloError( code, resp)
if usesesmtp and s. has_extn( "tls" ) :
"" "支持tls,则调用starttls(3)" ""
print ( "starttls" )
s. starttls( )
"" "再次调用ehlo(4)" ""
code = s. ehlo( ) [ 0]
if not ( 200 < = code < = 299) :
print ( "Could not EHLO after starttls" )
sys. exit( 5)
print ( "using tls connection" )
else :
"" "不支持tls,使用正常连接(2)" ""
print ( "server does not support tls,using normal connection" )
"" "发送邮件(5)" ""
s. sendmail( fromaddr, toaddr, msg)