« 我的垃圾美工。 | 首页 | 今天军人过节。 »

前面用perl写的群发邮件的脚本的python版本。

只是为了学习啊,东西虽然小,我是刚刚学,还是写了一段时间的。

代码如下。

在winxp + python 2.3.4  + winmail mailserver 3.8下正常通过。

Code:


#!/usr/bin/env python
# -*- coding: cp936 -*-

import smtplib
import time

######################################################
##    例程 gingerMail                      
##    参数列表                            
##    smtp_server                发邮件smtp服务器地址
##    from_usr                    发件人地址
##    to_usr                      收件人地址
##    title                         邮件标题
##    msg                          邮件内容
##    auth                         是否需要认证,1为是,0为否
##    log_usr                    smtp用户名
##    log_passwd             smtp密码
##    
######################################################

   
def gingerMail(smtp_server,from_usr,to_usr,title,msg,auth,log_usr,log_passwd):
   server = smtplib.SMTP(smtp_server)
   #server.set_debuglevel(1)
   if auth == 1:
       server.login(log_usr,log_passwd)
   head = "From: " + from_usr + "\n"
   head = head + "To: " + to_usr + "\n"
   head = head + "Subject: " + title + "\n\n"
   msg = head + msg    
   server.sendmail(from_usr, to_usr, msg)
   server.quit()

######################################################
##
##         以下为配置内容
##
######################################################

   
#邮件发送服务器地址
smtp_server = 'localhost'

#发件人地址
from_usr = 'ginger@localhost'

#邮件标题
title = '测试邮件一个,接好,别砸到!'

#发一封歇息多久
delay = 1

#smtp服务器是否需要验证
#需要验证为1不需要为0
auth = 1

#如果需要验证,请在下面输入用户名和密码
log_usr="ginger"
log_passwd="123456"


#包含收件人列表及可变信息的文本文件
#格式为:用户名,密码,详细信息
#请把它放在当前目录下,并把它命名为list.txt
f_list='list.txt';

try:
   f=open(f_list,'r')
   lines=f.readlines()
   #邮件计数变量
   cnt = 0
   for line in lines:
       (to_usr,passwd,detail) = line.split(",")
       #如果你的列表里直接存的就是email地址,请注释掉下面这一条
       to_usr = to_usr + "@localhost"
       msg = detail +", 您好\n\n"
       msg = msg + "我们的邮件服务器地址已经变为xxxxxxxx.\n"
       msg = msg + "您的用户名为" + to_usr + "密码为" + passwd
       msg = msg + "请尽快登陆修改。\n由于本次更改给您工作带来的不便在此表示歉意。\n谢谢您的支持。\n"
       cnt = cnt + 1
       print "I am sending Email No." + str(cnt) + " to " + to_usr + "......\n"
       gingerMail(smtp_server,from_usr,to_usr,title,msg,auth,log_usr,log_passwd)
       print "Email No." + str(cnt) + " has been sent to: " + to_usr + "\n"
       time.sleep(delay)
   f.close()    
   print "\n......All Finished!!!"
except IOError:
   print "Can not open list file please place it in current directory and name it as 'list.txt'\n"
   



测试用列表文件list.txt的内容

Code:


ginger,1111,臭老九
postmaster,2222,姜源
sleetdrop,3333,酱小鱼
ginger,4444,小姜




运行结果



收到的邮件




引用:

本篇引用地址:
http://www.vetcafe.net/cgi-bin/mt3/mt-tb.cgi/2234

发表评论

(如果您以前没在这里发表过评论,也许您发表的评论需要Blog主人的审核才能显示在这里,感谢您的静候。)