用python登录公司内部SMTP服务器的代码

来源:互联网 发布:乔丹98年总决赛数据 编辑:程序博客网 时间:2024/06/05 15:48
我所使用的发邮件模块代码:
# -*- coding: utf-8 -*-import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email import Encoders import osdef pyemail( first_receivers, second_receivers, subject, text, attach ):#first_receivers(收件人) 和second_receivers(抄送人)均为邮件字符串组成的列表,其他形参的类型均为字符串receivers = first_receivers + second_receiversmsg = MIMEMultipart()msg[ 'From' ] = 'docooler<zhongshan.zhou@xxx.com>'#这里的内容在microsoft outlook2010中只能显示为我的lync状态,原因是邮件解析器造成的,如果将其改成非员工邮箱比如docooler<zhongshann.zhou@xxx.com>则会全部显示出来(包含docooler以及左右尖角符号)        msg[ 'To' ] = ','.join( first_receivers )msg['Cc'] = ','.join(second_receivers)msg['Subject'] = subjectmsg.attach( MIMEText( text ) )if os.path.exists( attach ): part = MIMEBase( 'application', 'octet-stream' ) part.set_payload( open( attach, 'rb' ).read() ) Encoders.encode_base64( part ) part.add_header( 'Content-Disposition', 'attachment; filename="%s"' % os.path.basename( attach ) ) msg.attach(part)   mailServer = smtplib.SMTP( "153.88.183.83", 25 ) #用nslookup  -qt=mx xxx.com命令可以通过域名查到邮件服务器的地址列表mailServer.ehlo() mailServer.sendmail( msg[ 'From' ], receivers, msg.as_string() )#如果这里的msg[ 'From' 被改为一个邮箱地址字符串,貌似会被上面的覆盖,很奇怪。而这里的receivers不可以被改为msg[ 'To'],否则只会发送到列表的第一个字符串所表示的邮件地址        mailServer.close()

第二个代码:

import smtplibdef GenMail(sender, to):msg = "From : " + sender + "\n"msg += "To : " + to + "\n"msg += "Subject : just a test mail " + "\n\n\n"body = '''Hi , zhongShan !this is a mail to test python send mail!'''msg += bodyreturn msgdef sendMail(sender, to, msg):server = smtplib.SMTP('153.88.183.59')server.sendmail(sender, to, msg)server.quit()def send():sender = "docooelr<docooler@aluohao.com>"to = "zhongshan.zhou@xxx.com"msg = GenMail(sender, to)sendMail(sender, to, msg)if __name__ == '__main__':send()

因为对上面的代码已经进行了详细的解释。所以这里不再赘述,他的功能主要是可以帮助我们更好的理解上面的代码

0 0