今天做了一个发邮件的测试,用java发20封邮件 要用2分钟,但是用vbs发20封邮件只需要17秒,请问为什么会有这么大区别呢? java发邮件是采用网上最常见的方式。
Java 代码:import java.util.Properties; import javax.activation.DataHandler; 
import javax.mail.Message; 
import javax.mail.Multipart; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 
public class EmailTest 
{ /** 
* @param args 
*/ 
public static void main(String[] args) throws Exception 

Properties props = new Properties();  
props.put("mail.smtp.host", "10.128.64.111"); 
Session session = Session.getInstance(props, null); 
MimeMessage message = new MimeMessage(session); 
Transport bus = session.getTransport("smtp"); 
bus.connect(); 
InternetAddress from = new InternetAddress("[email protected]"); 
message.setFrom(from); 
InternetAddress iac = new InternetAddress("[email protected]"); 
message.addRecipient(Message.RecipientType.TO, iac); 
message.setSubject("Email Subject Test"); 
MimeBodyPart messageBodyPart = new MimeBodyPart(); 
DataHandler dh = new DataHandler("Email Text Test", "text/html;charset=Big5"); 
messageBodyPart.setDataHandler(dh); 
Multipart multipart = new MimeMultipart(); 
multipart.addBodyPart(messageBodyPart); 
message.setContent(multipart); 
long startTime = System.currentTimeMillis(); 
for(int i =0 ;i<20;i++) 

bus.send(message, message.getAllRecipients()); 

long endTime = System.currentTimeMillis(); 
System.out.println("startTime:" + startTime); 
System.out.println("endTime:" + endTime); 
System.out.println("interval:"+ (startTime-endTime)); 
bus.close(); } } 
VBS脚本发邮件:NameSpace = "http://schemas.microsoft.com/cdo/configuration/"
Set Email = CreateObject("CDO.Message")
Email.From = "[email protected]"  
Email.To = "[email protected]"
Email.Subject = "subject"
'Email.BodyPart.Charset = "utf-8"
'Email.Textbody = "1234"  
Email.Htmlbody="<a href='www.163.com'>test link</a>123<br>123"
With Email.Configuration.Fields
.Item(NameSpace&"sendusing") = 2
.Item(NameSpace&"smtpserver") = "10.128.64.111"  
'cnhub01----1
'aehub01----17
.Item(NameSpace&"smtpserverport") = 25
.Item(NameSpace&"smtpauthenticate") = 0
.Item(NameSpace&"sendusername") = ""
.Item(NameSpace&"sendpassword") = "" '
.Update
End With
for i=0 to 10
Email.Send 
next
msgbox "ok"

解决方案 »

  1.   

    VBS发了20封,上面写错了一点。
      

  2.   

    那就用 VBS 发呗,哪个快就用哪个
      

  3.   

    我也用Java发邮件,但测试过时间。看来以后要注意了。学习了,还不知道VBS是什么呢.........
      

  4.   

    VBS就是VBScript,跟JavaScript脚本类似
      

  5.   

    试试发plain text的内容,差距多大可能在处理mime内容上有不同的方式
      

  6.   

    目前问题已基本解决。如果将java改成非匿名发送邮件,速度将是一样的。
      

  7.   

    难道用匿名方式,smtp服务器会反查发送方域名/机器名?导致占用较长的时间?