ben*_*ser 5 java email performance sendmail jakarta-mail
我正在测试https://javaee.github.io/javamail/FAQ中所述的sendmail示例 .这是一个简单的邮件发送操作,没有SSL,也没有附件.它在任何地方都可以正常工作,但在客户端上,当邮件api变得更新时,我们会有一个去线性能.
服务器是windows,java 1.8.131,在所有测试用例中使用相同的邮件服务器和邮件帐户以及相同的地址和java源.唯一的区别是使用的mailapi.我运行程序
java -cp javax.mail.1.XXjar; sendmailtesttool.jar SendMail
我为每个邮件api尝试了100次并获得平均持续时间.
使用的来源:
Properties properties = new Properties();
properties.put("mail.smtp.host", 192.168.0.X); // use default port25
Session session = Session.getInstance(properties);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(..);
msg.setSubject(..);
msg.setRecipients(..);
//no attachments
MultiPart mp = new MultiPart();
MimeBodyPart bp = new MimeBodyPart();
DataSource ds = ByteArrayDataSource("foo"..);
DataHandler dh = new DataHandler(ds);
bp.setDataHandler(dh);
mp.addBodyPart(bp);
msg.setContent(mp);
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
msg.saveChanges(); // is really needed ? (no reply/forward)
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
Run Code Online (Sandbox Code Playgroud)
我添加了测试工具的输出:
Java Mail Api 1.4.0
Sending mail.....start
Setting port to:25
Setting host to:192.168.0.213
Set additional session prop host to prevent HELO
Set additional session prop from to prevent EHLO
Session generated with authenticator took:63
Message generated took:47
Parse from address took:0
Set from address to message took:0
Set recipients took:0
Get all recipients took:0
Set cc, bcc took:0
Parse subject took:16
Set subject to message took:0
Set body text took:0
Set content took:0
Set sent date took:15
Transport generated took:32
Connected to transport took:93
Save changes took:0
Message send took:94
Transport closed took:0
Message id fetched took:0
Run Code Online (Sandbox Code Playgroud)
发送邮件.....在391完成
平均值为:391.0
Java Mail Api 1.5.6
Sending mail.....start
Setting port to:25
Setting host to:192.168.0.213
Set additional session prop host to prevent HELO
Set additional session prop from to prevent EHLO
Session generated with authenticator took:62
Message generated took:63
Parse from address took:0
Set from address to message took:16
Set recipients took:0
Get all recipients took:0
Set cc, bcc took:0
Parse subject took:0
Set subject to message took:0
Set body text took:0
Set content took:0
Set sent date took:15
Transport generated took:32
Connected to transport took:9126
Save changes took:0
Message send took:47
Transport closed took:0
Message id fetched took:0
Run Code Online (Sandbox Code Playgroud)
发送邮件.....在9423完成
平均值为:9423.0
jvm邮件调试输出
Java Mail API 1.4.0
DEBUG:setDebug:JavaMail 1.4ea版
DEBUG:getProvider()返回javax.mail.Provider [TRANSPORT,smtp,com.sun.mail.s
mtp.SMTPTransport,Sun Microsystems,Inc]
DEBUG SMTP:useEhlo true,useAuth true
DEBUG SMTP:尝试连接到主机"192.168.0.X",端口25,isSSL false
220邮件.******.ESMTP Postfix
DEBUG SMTP:连接到主机"192.168.0.X",端口:25
EHLO WIN-0RL58R42TTN
250邮箱.******.com
250流水
250-SIZE 102400000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH = PLAIN LOGIN
250 ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP:找到扩展名"PIPELINING",arg""
DEBUG SMTP:找到扩展名"SIZE",arg"102400000"
DEBUG SMTP:找到扩展名"VRFY",arg""
DEBUG SMTP:找到扩展名"ETRN",arg""
DEBUG SMTP:找到扩展名"STARTTLS",arg""
DEBUG SMTP:找到扩展名"AUTH",arg"PLAIN LOGIN"
DEBUG SMTP:找到扩展名"AUTH = PLAIN",arg"LOGIN"
DEBUG SMTP:找到扩展名"ENHANCEDSTATUSCODES",arg""
DEBUG SMTP:找到扩展名"8BITMIME",arg""
DEBUG SMTP:找到扩展名"DSN",arg""
DEBUG SMTP:尝试进行身份验证
AUTH LOGIN
334 VXNlcm5hbWU6
am9iaW4uZWxhbmppY2thbEBhbGNvbmVsZWN0cm9uaWNzLmNvbQ ==
334 UGFzc3dvcmQ6
Sk9CSU5ANzc3TnM =
235 2.7.0验证成功
DEBUG SMTP:use8bit false
邮件来自:
250 2.1.0好的
RCPT TO:
250 2.1.5好的
DEBUG SMTP:已验证的地址
DEBUG SMTP:receiver@******.com
数据
354结束数据.
日期:星期四,2017年12月14日14:17:46 +0530(IST)
来自:sender@******.com
致:receiver@******.com
消息ID:<396180261.01513241266298.JavaMail.sender @******
.COM>
主题:test3
MIME版本:1.0
内容类型:multipart/mixed;
Run Code Online (Sandbox Code Playgroud)boundary="----=_Part_0_2093176254.1513241266126"------ = _ Part_0_2093176254.1513241266126
内容类型:text/plain; 字符集= utf-8的
内容传输编码:7位
测试
------ = _ Part_0_2093176254.1513241266126--
.
250 2.0.0好的:排队为7E38D48F0411
放弃
221 2.0.0再见
Java Mail API 1.5.6
DEBUG:setDebug:JavaMail 1.5.6版
DEBUG:getProvider()返回javax.mail.Provider [TRANSPORT,smtp,com.sun.mail.s
mtp.SMTPTransport,甲骨文]
DEBUG SMTP:useEhlo true,useAuth true
DEBUG SMTP:尝试连接到主机"192.168.0.X",端口25,isSSL false
220邮件.******.ESMTP Postfix
DEBUG SMTP:连接到主机"192.168.0.X",端口:25
EHLO WIN-0RL58R42TTN
250邮箱.******.com
250流水
250-SIZE 102400000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH = PLAIN LOGIN
250 ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP:找到扩展名"PIPELINING",arg""
DEBUG SMTP:找到扩展名"SIZE",arg"102400000"
DEBUG SMTP:找到扩展名"VRFY",arg""
DEBUG SMTP:找到扩展名"ETRN",arg""
DEBUG SMTP:找到扩展名"STARTTLS",arg""
DEBUG SMTP:找到扩展名"AUTH",arg"PLAIN LOGIN"
DEBUG SMTP:找到扩展名"AUTH = PLAIN",arg"LOGIN"
DEBUG SMTP:找到扩展名"ENHANCEDSTATUSCODES",arg""
DEBUG SMTP:找到扩展名"8BITMIME",arg""
DEBUG SMTP:找到扩展名"DSN",arg""
DEBUG SMTP:protocolConnect login,host = 192.168.0.X,user = sender @ alc
onelectronics.com,密码=
DEBUG SMTP:尝试使用机制进行身份验证:LOGIN PLAIN DIGEST-MD5 NTL
M XOAUTH2
DEBUG SMTP:使用机制LOGIN
DEBUG SMTP:AUTH LOGIN命令跟踪被抑制
DEBUG SMTP:AUTH LOGIN成功
DEBUG SMTP:use8bit false
邮件来自:
250 2.1.0好的
RCPT TO:
250 2.1.5好的
DEBUG SMTP:已验证的地址
DEBUG SMTP:receiver@******.com
数据
354结束数据.
日期:星期四,2017年12月14日14:18:03 +0530(IST)
来自:sender@******.com
致:receiver@******.com
消息ID:<1109371569.1.1513241292669 @******.com>
主题:test3
MIME版本:1.0
内容类型:multipart/mixed;
Run Code Online (Sandbox Code Playgroud)boundary="----=_Part_0_1349393271.1513241283434"------ = _ Part_0_1349393271.1513241283434
内容类型:text/plain; 字符集= utf-8的
内容传输编码:7位
测试
------ = _ Part_0_1349393271.1513241283434--
.
250 2.0.0好的:排队为D894D48F0411
DEBUG SMTP:邮件已成功传递到邮件服务器
放弃
221 2.0.0再见
我不相信只有一个理由让它变慢。您可能需要更改下面示例中的一些默认值。
在邮件 api属性的 1.6 文档中mail.mime.address.usecanonicalhostname,它指出:
使用 InetAddress.getCanonicalHostName 方法确定 InternetAddress.getLocalAddress 方法中的主机名。对于某些网络配置,InetAddress.getCanonicalHostName 可能会很慢,或者可能返回地址而不是主机名。在这种情况下,将此系统属性设置为 false 将导致使用 InetAddress.getHostName 方法。默认为 true。
因此,如果将默认值更改为 false,则可能会改变其性能。
我还建议查看java mail api 发行说明以找出一些线索。
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |