未解决群发邮件问题,骨灰级高手请进。。。 我是来学习的 ....同意,shalen520,只是个人也没有 Message Queue 的实战经验 .... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 后台脚本.你的页面执行时.向数据库(或者Windows 的消息队列)里插入待发邮件的记录.可能一次插入上万条.(但这种做法,不太科学)如果一次太多的话.我的流程是这样的.设计一个数据表.表为待群发记录编号邮件模板待收用户组添加时间截止时间(失效时间)备注表2 待发邮件记录编号邮件内容收件人地址SMTP 服务器池后台两脚本.1 脚本 从表1中读取记录(分段) 再组合邮件内容分段插入表2 (SMTP服务器池为可选项)2 脚本(可以一次跑多个) 从表2中读取待发记录 发送邮件(发送后.删除读取的记录)总之, 这样的批量操作.一定是后台做队列脚本处理. 那就弄个webservice ,把准备发送的邮件地址,内容。smpt等信息传给service就不用管了。webservice接收到后先存到数据库,然后从上往下,发一封,删一条记录。 Thread.Spleed 不是更慢吗,呵呵在Application_Init 时,初始化一个Threading.Timer 然后定时的发关邮件就可以了 HttpModule or Gloas文件里写 这样的功能最好是做一个服务,或者是winform的小程序实现,IE做长时间的计算或者操作会响应失败的 如果不使用thread.sleep()的方式去发送,极有可能被当成垃圾邮件如果你仅仅是发邮件,不考虑收不收到的问题,还可以使用多线程发 Web中发送邮件都是在服务器上面另开一个线程或者服务来操作的你先把要发的放如数据库中,然后后台进程每1秒钟检查数据库优点:前端线程不阻塞发送失败可以再次发送缺点至于不能及时得到发送结果就是即时发送也得到是伪结果 所以基本可以忽略 另外如果是采用SMTP认证,使用别人的邮箱去发,这个一般有限制的,一天最多只能发几百封而已,包括你买的企业邮局,如果是采用自建的邮件服务器,极有可能被当成垃圾邮件处理,这是我们现在碰到的问题 写个winform程序运行起来..开几百个线程一起发就行了.... 代码用控制台程序做,再放到windows任务里定时运行。foreach(DataRow u in UserTable.Rows){ body = 用户信息和广告; SendEmail(u["Email"].ToString(),title,body.ToString()); System.Threading.Thread.Sleep(2000);// 暂停2秒} <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Server.ScriptTimeOut=9999999 Response.Buffer = True dim FoundErr, ErrMsg, Action dim MailServerUserName, MailServerPassWord, MailDomain, MailServer dim MailtoAddress, MailtoName, Subject, MailBody, FromName, MailFrom, Priority FoundErr = False ErrMsg = "" Action = Trim(Request("action")) ComeUrl = "" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>群发邮件系统</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <META content="Microsoft FrontPage 4.0" Name=GENERATOR> <STYLE type=text/css> a {text-decoration: none;} /* 链接无下划线,有为underline */ a:link {color: #000000;text-decoration: none;} /* 未访问的链接 */ a:visited {color: #000000;text-decoration: none;} /* 已访问的链接 */ a:hover {color: #ff6600;text-decoration: none;} /* 鼠标在链接上 */ a:active {color: #000000;text-decoration: none;} /* 点击激活链接 */ TD { FONT-SIZE: 18px; COLOR: #000000; FONT-FAMILY: '宋体';LINE-HEIGHT: 150%; } BODY { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: '宋体' } INPUT { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: '宋体' } SELECT { FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: '宋体' } .title { background:#0DB432; color: #ffffff; font-weight: normal; } .border { border: 1px solid #0DB432; } .tdbg{ background:#f0f0f0; line-height: 120%; } .tdbg1{ background:#A3E2B1; line-height: 120%; } </STYLE> </HEAD> <BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0> <br> <% Select Case Action Case "send" Call sendMail() Case Else Call Main() End Select If FoundErr = True Then Response.Write WriteErrMsg(ErrMsg, ComeUrl,"错误信息") End If Response.write"</BODY></HTML>" sub main() If Not IsObjInstalled("JMail.Message") Then FoundErr=True ErrMsg = "服务器不支持JMail组件,请正确安装" Exit Sub End If %> <form action="wssf.asp?Action=send" method=post> <table width="80%" class="border" border="0" cellspacing="1" cellpadding="4" align="center" height="589"> <tr> <td height="40" colspan="2" align="center" class="title"> <p><b> 群发邮件系统</b></p> </td> </tr> <tr> <td width='30%' class='tdbg1' height="25"><strong>邮件服务器地址:</strong> </td> <td class='tdbg' height="25"> <input name='MailServer' type='text' id='MailServer' value='smtp.163.com' size='40'> <FONT color=#ff0000>*</FONT> </td> </tr> <tr> <td width='30%' class='tdbg1' height="25"><strong>登录用户名一:</strong> </td> <td class='tdbg' height="25"> <input name='MailServerUserName1' type='text' id='MailServerUserName1' value='XXX' size='40'> <FONT color=#ff0000>*</FONT> </td> </tr> <tr> <td width='30%' class='tdbg1' height="25"><strong>登录密码一:</strong> </td> <td class='tdbg' height="25"> <input name='MailServerPassWord1' type='password' id='MailServerPassWord1' value='***' size='40'> <FONT color=#ff0000>*</FONT> </td> </tr> <tr> <td width="30%" class="tdbg1" height="25">您的姓名:</td> <td class="tdbg" height="25"><input name="name" type=text id="name" size=30> <FONT color=#ff0000>*</FONT></td> </tr> <tr> <td width="30%" class="tdbg1" height="25">您的E-mail:</td> <td class="tdbg" height="25"><input name="email" type=text id="email" value="[email protected]" size=30> <FONT color=#ff0000>*</FONT></td> </tr> <tr> <td width="30%" class="tdbg1" height="25">收件人姓名:</td> <td class="tdbg" height="25"><input name="toname" type=text id="toname" size=30> <FONT color=#ff0000>*</FONT></td> </tr> <tr> <td width="30%" class="tdbg1" height="25">收件人Email:</td> <td class="tdbg" height="25"><input name="toemail" type="text" id="toemail" size="30" maxlength="100"> <FONT color=#ff0000>*</FONT></td> </tr> <tr> <td width="30%" class="tdbg1" height="25">邮件标题:</td> <td class="tdbg" height="25"><input type=text name="topic" size=30> <FONT color=#ff0000>*</FONT></td> </tr> <tr> <td width="30%" class="tdbg1" height="500">邮件内容:</td> <td class="tdbg" height="500"><textarea name="body" cols=74 rows=34 id="body"></textarea> <FONT color=#ff0000>*</FONT></td> </tr> <tr> <td width="30%" class="tdbg" height="27"></td> <td height=27 class="tdbg"> <input type="Submit" value="发送邮件" name="Submit"> <input type="reset" name="Clear" value="重新填写"> </td> </tr> </table> </form> <% End Sub Sub sendMail() MailServer = trim(Request("MailServer")) 'SMTP服务器地址:smtp.163.com, 请修改 MailServerUserName = trim(Request("MailServerUserName")) 'SMTP登录用户名:[email protected], 请修改 MailServerPassWord = trim(Request("MailServerPassWord")) 'SMTP登录密码:***, 请修改,注意大小写 MailDomain = trim(Request("MailDomain")) 'SMTP域名:163.com, 请修改 FromName = trim(Request("name")) '发件人名字 MailFrom = trim(Request("email")) '发件人邮箱 MailtoName = trim(Request("toname")) '发件人名字 MailtoAddress=trim(Request("toemail")) '收件人邮箱 Subject = trim(Request("topic")) MailBody = trim(Request("body")) Priority=3 If FromName="" or MailFrom="" or MailtoName="" or Subject="" or MailBody="" then FoundErr = True ErrMsg = "请填写完整每一项信息!" Exit Sub End If ErrMsg = JSendMail() If ErrMsg<>"" Then FoundErr = True Exit Sub Else Response.Write WriteErrMsg("", ComeUrl,"成功信息") End If End Sub Function JSendMail() On Error Resume Next JSendMail = "" Dim JMail,tempMessage Set JMail = Server.CreateObject("JMail.Message") JMail.silent=true JMail.Logging = True JMail.Charset = "gb2312" '邮件编码 JMail.silent = True JMail.ContentType = "text/html" '邮件正文格式 JMail.ServerAddress=MailServer '用来发送邮件的SMTP服务器 '如果服务器需要SMTP身份验证则还需指定以下参数 JMail.MailServerUserName = MailServerUserName1 '登录用户名 JMail.MailServerPassWord = MailServerPassWord1 '登录密码 JMail.AddRecipient MailtoAddress, MailtoName '收信人 JMail.Subject = Subject '主题 JMail.HtmlBody = MailBody '邮件正文(HTML格式) JMail.Body = MailBody '邮件正文(纯文本格式) JMail.FromName = FromName '发信人姓名 JMail.From = MailFrom '发信人Email JMail.Priority = Priority '邮件等级,1为加急,3为普通,5为低级 Dim emailArray If MailtoAddress="" then set fsObj = Server.CreateObject("Scripting.FileSystemObject") FilePath = Server.MapPath("email.txt") set txtsObj = fsObj.OpenTextFile(FilePath, 1, false) i = 0 Do While Not txtsObj.atEndOfStream emailArray(i)=txtsObj.ReadLine JMail.AddRecipient Trim(emailArray(i)),MailtoName i=i+1 loop Else JMail.AddRecipient MailtoAddress, MailtoName End If JMail.Send (MailServer) tempMessage = JMail.ErrorMessage JMail.Close Set JMail = Nothing If tempMessage<>"" then FoundErr = True JSendMail = tempMessage end if Set JMail = Nothing End Function Function IsObjInstalled(strClassString) On Error Resume Next IsObjInstalled = False Err = 0 Dim xTestObj Set xTestObj = CreateObject(strClassString) If Err.Number = 0 Then IsObjInstalled = True Set xTestObj = Nothing Err = 0 End Function Function WriteErrMsg(sMsg, sComeUrl,Massages) Dim strMsg strMsg = strMsg & "<html><head><title>"&Massages&"</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbCrLf strMsg = strMsg & "</head><body><br><br>" & vbCrLf strMsg = strMsg & "<table cellpadding=2 cellspacing=1 border=0 width=400 class='border' align=center>" & vbCrLf strMsg = strMsg & " <tr align='center' class='title'><td height='22'><strong>"&Massages&"</strong></td></tr>" & vbCrLf if FoundErr=True Then strMsg = strMsg & " <tr class='tdbg'><td height='100' valign='top'><b>产生错误的可能原因:</b>" & sMsg & "</td></tr>" & vbCrLf Else strMsg = strMsg & " <tr class='tdbg'><td height='100' valign='top'><br><b>恭喜,成功用JMail发送邮件!</b>" & sMsg & "</td></tr>" & vbCrLf End If strMsg = strMsg & " <tr align='center' class='tdbg'><td>" If sComeUrl <> "" Then strMsg = strMsg & "<a href='javascript:history.go(-1)'><< 返回上一页</a>" Else strMsg = strMsg & "<a href='javascript:window.close();'>【关闭】</a>" End If strMsg = strMsg & "</td></tr>" & vbCrLf strMsg = strMsg & "</table>" & vbCrLf strMsg = strMsg & "</body></html>" & vbCrLf WriteErrMsg = strMsg End Function %> 消息队列,webservice处理~~长见识了~~~~ sql job + sql mail 如果用户很多,需要发邮件的频率不高的话,建议使用sql job + sql mail;如果需要发邮件的频率很高的话,建议使用windows service; 接上:可以给这个C/S程序单独设计一个邮件发送列表,相当于任务的方式,将要发送的邮件插入到这个表中,C/S程序自动从该表中抽取记录进行发送 楼主可以专门做个C/S的程序用来发邮件,采用多线程的方式,应该效率会提高很多,可以给这个C/S程序单独设计一个邮件发送列表,相当于任务的方式,将要发送的邮件插入到这个表中,C/S程序自动从该表中抽取记录进行发送 觉得这个方法好 只要把邮件信息传给webservice,剩下的你就可以不用管了,完全交给webservice来完成发送 学习了 好思路了。最近也在弄这个 碰到很多问题了主要是成功率和运行的时间还有JMAIL 的封IP 封邮箱的机智问题了。很头痛了。 C#操作MSMQ(消息队列) 求教!网络硬盘中怎样对文件进行管理··· 怎样让弹出的对话框漂亮一些(怎么实现)? fso.OpenTextFile 同时写入 ASP.NET怎样包含网页 如何实现跨站点操作?javaScript能做到吗?非常现实试用的问题,请高手支招 asp.net实现省市级联 大家用C#写代码的时候,都导入哪些名字空间啊? textbox控件的聚焦问题! 如何实现这样的查询功能 动态生成table 怎样将2个以上表的不同字段绑定到同一个GridView? 初学ASP.NET应该看哪本精典教材?有劳哪位大虾指点一下
可能一次插入上万条.(但这种做法,不太科学)如果一次太多的话.我的流程是这样的.设计一个数据表.表为
待群发记录编号
邮件模板
待收用户组
添加时间
截止时间(失效时间)
备注表2
待发邮件记录编号
邮件内容
收件人地址
SMTP 服务器池
后台两脚本.
1 脚本
从表1中读取记录(分段)
再组合邮件内容分段插入表2 (SMTP服务器池为可选项)2 脚本(可以一次跑多个)
从表2中读取待发记录
发送邮件(发送后.删除读取的记录)总之, 这样的批量操作.一定是后台做队列脚本处理.
那就弄个webservice ,把准备发送的邮件地址,内容。smpt等信息传给service就不用管了。webservice接收到后先存到数据库,然后从上往下,发一封,删一条记录。
前端线程不阻塞
发送失败可以再次发送缺点
至于不能及时得到发送结果
就是即时发送也得到是伪结果 所以基本可以忽略
{
body = 用户信息和广告;
SendEmail(u["Email"].ToString(),title,body.ToString()); System.Threading.Thread.Sleep(2000);// 暂停2秒
}
<% Server.ScriptTimeOut=9999999
Response.Buffer = True dim FoundErr, ErrMsg, Action
dim MailServerUserName, MailServerPassWord, MailDomain, MailServer
dim MailtoAddress, MailtoName, Subject, MailBody, FromName, MailFrom, Priority FoundErr = False
ErrMsg = ""
Action = Trim(Request("action"))
ComeUrl = ""
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>群发邮件系统</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="Microsoft FrontPage 4.0" Name=GENERATOR>
<STYLE type=text/css>
a {text-decoration: none;} /* 链接无下划线,有为underline */
a:link {color: #000000;text-decoration: none;} /* 未访问的链接 */
a:visited {color: #000000;text-decoration: none;} /* 已访问的链接 */
a:hover {color: #ff6600;text-decoration: none;} /* 鼠标在链接上 */
a:active {color: #000000;text-decoration: none;} /* 点击激活链接 */
TD {
FONT-SIZE: 18px; COLOR: #000000; FONT-FAMILY: '宋体';LINE-HEIGHT: 150%;
}
BODY {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: '宋体'
}
INPUT {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: '宋体'
}
SELECT {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: '宋体'
}
.title
{
background:#0DB432;
color: #ffffff;
font-weight: normal;
}
.border
{
border: 1px solid #0DB432;
}
.tdbg{
background:#f0f0f0;
line-height: 120%;
}
.tdbg1{
background:#A3E2B1;
line-height: 120%;
}
</STYLE>
</HEAD> <BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0>
<br>
<%
Select Case Action
Case "send"
Call sendMail()
Case Else
Call Main()
End Select
If FoundErr = True Then
Response.Write WriteErrMsg(ErrMsg, ComeUrl,"错误信息")
End If
Response.write"</BODY></HTML>" sub main() If Not IsObjInstalled("JMail.Message") Then
FoundErr=True
ErrMsg = "服务器不支持JMail组件,请正确安装"
Exit Sub
End If
%>
<form action="wssf.asp?Action=send" method=post>
<table width="80%" class="border" border="0" cellspacing="1" cellpadding="4" align="center" height="589">
<tr>
<td height="40" colspan="2" align="center" class="title">
<p><b> 群发邮件系统</b></p> </td>
</tr>
<tr>
<td width='30%' class='tdbg1' height="25"><strong>邮件服务器地址:</strong> </td>
<td class='tdbg' height="25">
<input name='MailServer' type='text' id='MailServer' value='smtp.163.com' size='40'> <FONT color=#ff0000>*</FONT>
</td>
</tr>
<tr>
<td width='30%' class='tdbg1' height="25"><strong>登录用户名一:</strong>
</td>
<td class='tdbg' height="25">
<input name='MailServerUserName1' type='text' id='MailServerUserName1' value='XXX' size='40'> <FONT color=#ff0000>*</FONT>
</td>
</tr>
<tr>
<td width='30%' class='tdbg1' height="25"><strong>登录密码一:</strong>
</td>
<td class='tdbg' height="25">
<input name='MailServerPassWord1' type='password' id='MailServerPassWord1' value='***' size='40'> <FONT color=#ff0000>*</FONT>
</td>
</tr> <tr>
<td width="30%" class="tdbg1" height="25">您的姓名:</td>
<td class="tdbg" height="25"><input name="name" type=text id="name" size=30>
<FONT color=#ff0000>*</FONT></td>
</tr>
<tr>
<td width="30%" class="tdbg1" height="25">您的E-mail:</td>
<td class="tdbg" height="25"><input name="email" type=text id="email" value="[email protected]" size=30>
<FONT color=#ff0000>*</FONT></td>
</tr>
<tr>
<td width="30%" class="tdbg1" height="25">收件人姓名:</td>
<td class="tdbg" height="25"><input name="toname" type=text id="toname" size=30>
<FONT color=#ff0000>*</FONT></td>
</tr>
<tr>
<td width="30%" class="tdbg1" height="25">收件人Email:</td>
<td class="tdbg" height="25"><input name="toemail" type="text" id="toemail" size="30" maxlength="100">
<FONT color=#ff0000>*</FONT></td>
</tr>
<tr>
<td width="30%" class="tdbg1" height="25">邮件标题:</td>
<td class="tdbg" height="25"><input type=text name="topic" size=30>
<FONT color=#ff0000>*</FONT></td>
</tr>
<tr>
<td width="30%" class="tdbg1" height="500">邮件内容:</td>
<td class="tdbg" height="500"><textarea name="body" cols=74 rows=34 id="body"></textarea>
<FONT color=#ff0000>*</FONT></td>
</tr>
<tr>
<td width="30%" class="tdbg" height="27"></td>
<td height=27 class="tdbg">
<input type="Submit" value="发送邮件" name="Submit">
<input type="reset" name="Clear" value="重新填写">
</td>
</tr>
</table>
</form>
<%
End Sub
MailServer = trim(Request("MailServer")) 'SMTP服务器地址:smtp.163.com, 请修改
MailServerUserName = trim(Request("MailServerUserName")) 'SMTP登录用户名:[email protected], 请修改
MailServerPassWord = trim(Request("MailServerPassWord")) 'SMTP登录密码:***, 请修改,注意大小写
MailDomain = trim(Request("MailDomain")) 'SMTP域名:163.com, 请修改 FromName = trim(Request("name")) '发件人名字
MailFrom = trim(Request("email")) '发件人邮箱
MailtoName = trim(Request("toname")) '发件人名字
MailtoAddress=trim(Request("toemail")) '收件人邮箱
Subject = trim(Request("topic"))
MailBody = trim(Request("body"))
Priority=3
If FromName="" or MailFrom="" or MailtoName="" or Subject="" or MailBody="" then
FoundErr = True
ErrMsg = "请填写完整每一项信息!"
Exit Sub
End If
ErrMsg = JSendMail()
If ErrMsg<>"" Then
FoundErr = True
Exit Sub
Else
Response.Write WriteErrMsg("", ComeUrl,"成功信息")
End If
End Sub Function JSendMail()
On Error Resume Next
JSendMail = ""
Dim JMail,tempMessage
Set JMail = Server.CreateObject("JMail.Message")
JMail.silent=true
JMail.Logging = True JMail.Charset = "gb2312" '邮件编码
JMail.silent = True
JMail.ContentType = "text/html" '邮件正文格式
JMail.ServerAddress=MailServer '用来发送邮件的SMTP服务器
'如果服务器需要SMTP身份验证则还需指定以下参数
JMail.MailServerUserName = MailServerUserName1 '登录用户名
JMail.MailServerPassWord = MailServerPassWord1 '登录密码 JMail.AddRecipient MailtoAddress, MailtoName '收信人
JMail.Subject = Subject '主题
JMail.HtmlBody = MailBody '邮件正文(HTML格式)
JMail.Body = MailBody '邮件正文(纯文本格式)
JMail.FromName = FromName '发信人姓名
JMail.From = MailFrom '发信人Email
JMail.Priority = Priority '邮件等级,1为加急,3为普通,5为低级
Dim emailArray
If MailtoAddress="" then
set fsObj = Server.CreateObject("Scripting.FileSystemObject")
FilePath = Server.MapPath("email.txt")
set txtsObj = fsObj.OpenTextFile(FilePath, 1, false)
i = 0
Do While Not txtsObj.atEndOfStream
emailArray(i)=txtsObj.ReadLine
JMail.AddRecipient Trim(emailArray(i)),MailtoName
i=i+1
loop
Else
JMail.AddRecipient MailtoAddress, MailtoName
End If
JMail.Send (MailServer)
tempMessage = JMail.ErrorMessage
JMail.Close
Set JMail = Nothing
If tempMessage<>"" then
FoundErr = True
JSendMail = tempMessage
end if
Set JMail = Nothing
End Function Function IsObjInstalled(strClassString)
On Error Resume Next
IsObjInstalled = False
Err = 0
Dim xTestObj
Set xTestObj = CreateObject(strClassString)
If Err.Number = 0 Then IsObjInstalled = True
Set xTestObj = Nothing
Err = 0
End Function
Function WriteErrMsg(sMsg, sComeUrl,Massages)
Dim strMsg
strMsg = strMsg & "<html><head><title>"&Massages&"</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbCrLf
strMsg = strMsg & "</head><body><br><br>" & vbCrLf
strMsg = strMsg & "<table cellpadding=2 cellspacing=1 border=0 width=400 class='border' align=center>" & vbCrLf
strMsg = strMsg & " <tr align='center' class='title'><td height='22'><strong>"&Massages&"</strong></td></tr>" & vbCrLf
if FoundErr=True Then
strMsg = strMsg & " <tr class='tdbg'><td height='100' valign='top'><b>产生错误的可能原因:</b>" & sMsg & "</td></tr>" & vbCrLf
Else
strMsg = strMsg & " <tr class='tdbg'><td height='100' valign='top'><br><b>恭喜,成功用JMail发送邮件!</b>" & sMsg & "</td></tr>" & vbCrLf
End If
strMsg = strMsg & " <tr align='center' class='tdbg'><td>"
If sComeUrl <> "" Then
strMsg = strMsg & "<a href='javascript:history.go(-1)'><< 返回上一页</a>"
Else
strMsg = strMsg & "<a href='javascript:window.close();'>【关闭】</a>"
End If
strMsg = strMsg & "</td></tr>" & vbCrLf
strMsg = strMsg & "</table>" & vbCrLf
strMsg = strMsg & "</body></html>" & vbCrLf
WriteErrMsg = strMsg
End Function
%>
长见识了~~~~
如果需要发邮件的频率很高的话,建议使用windows service;
觉得这个方法好
只要把邮件信息传给webservice,剩下的你就可以不用管了,完全交给webservice来完成发送
最近也在弄这个 碰到很多问题了
主要是成功率和运行的时间
还有JMAIL 的封IP 封邮箱的机智问题了。很头痛了。