From 6ed883322924f7ba497a5ddba182e92e64314022 Mon Sep 17 00:00:00 2001 From: wupingyuan Date: Wed, 30 Aug 2023 17:56:53 +0800 Subject: [PATCH] =?UTF-8?q?SMTP=E5=92=8CPOP3=E6=B7=BB=E5=8A=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=93=8D=E5=BA=94=E6=97=B6=E9=95=BF=E3=80=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0TOP=E5=91=BD=E4=BB=A4=E8=BE=93=E5=85=A5=E8=A1=8C?= =?UTF-8?q?=E6=95=B0=E3=80=81=E5=8E=BB=E9=99=A4LAST=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- POP3Client/POP3/oh-package.json5 | 17 ++-- POP3Client/POP3/src/main/ets/Command.ts | 5 ++ POP3Client/POP3/src/main/ets/Connection.ts | 8 ++ POP3Client/build-profile.json5 | 1 - POP3Client/entry/oh-package.json5 | 8 +- .../main/ets/pages/AutoLoginCommandPage.ets | 85 +++++++++++++++---- POP3Client/oh-package.json5 | 15 ++-- SMTPClient/SMTP/oh-package.json5 | 27 +++--- SMTPClient/SMTP/src/main/ets/client.ts | 5 ++ SMTPClient/build-profile.json5 | 1 - SMTPClient/entry/oh-package.json5 | 8 +- .../entry/src/main/ets/pages/LoginPage.ets | 10 ++- .../entry/src/main/ets/pages/SendMailPage.ets | 5 ++ SMTPClient/oh-package.json5 | 15 ++-- 14 files changed, 146 insertions(+), 64 deletions(-) diff --git a/POP3Client/POP3/oh-package.json5 b/POP3Client/POP3/oh-package.json5 index 8214419..683b7b0 100644 --- a/POP3Client/POP3/oh-package.json5 +++ b/POP3Client/POP3/oh-package.json5 @@ -1,28 +1,29 @@ { - "types": '', + "types": "", "keywords": [ - 'POP3 Protocol', - 'receive mail', + "POP3 Protocol", + "receive mail", "OpenHarmony", "HarmonyOS" ], + "author": "ohos_tpc", "ohos": { "org": "opensource" }, - "name": "@ohos/node_pop3", - "version": "1.0.0", "description": "pop3 command support for node. Supports Promise and stream.", "main": "index.ts", "type": "module", "repository": "http://gitee.com/PriLibrary/commons-net/tree/master/POP3Client", + "version": "1.0.0", "tags": [ "Network", "Tool" ], - "author": "ohos_tpc", - "license": "MIT", "dependencies": {}, + "license": "MIT", + "devDependencies": {}, + "name": "@ohos/node_pop3", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" \u0026\u0026 exit 1" } } diff --git a/POP3Client/POP3/src/main/ets/Command.ts b/POP3Client/POP3/src/main/ets/Command.ts index 4d4be0d..cbef710 100644 --- a/POP3Client/POP3/src/main/ets/Command.ts +++ b/POP3Client/POP3/src/main/ets/Command.ts @@ -4,6 +4,7 @@ import Pop3Connection from '../ets/Connection'; import { listify, stream2String } from '../ets/helper'; import to, { to } from './await-to-js'; +const BASE_COUNT = 1 /** * @typedef {number} Integer @@ -69,7 +70,11 @@ class Pop3Command extends Pop3Connection { this._socket = undefined; } } + let startTime1 = new Date().getTime(); await super.connect(); + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("connect averageTime : " + averageTime1 + "us") await super.command('USER', this.user); const [info] = await super.command('PASS', this.password); this._PASSInfo = info; diff --git a/POP3Client/POP3/src/main/ets/Connection.ts b/POP3Client/POP3/src/main/ets/Connection.ts index 25b179d..7939278 100644 --- a/POP3Client/POP3/src/main/ets/Connection.ts +++ b/POP3Client/POP3/src/main/ets/Connection.ts @@ -16,6 +16,7 @@ import { TERMINATOR_BUFFER, TERMINATOR_BUFFER_ARRAY } from './constant.js'; +const BASE_COUNT = 1 class Pop3Connection extends EventEmitter { @@ -279,6 +280,7 @@ class Pop3Connection extends EventEmitter { * @returns {Promise<[string, Readable]>} */ async command(...args) { + let startTime1 = new Date().getTime(); this._command = args.join(' '); if (!this._socket) { throw new Pop3Error('no-socket'); @@ -313,12 +315,18 @@ class Pop3Connection extends EventEmitter { if ('getCipherSuite' in this._socket) { let tempSocket = this._socket as socket.TLSSocket; tempSocket.send(`${this._command}${CRLF}`) + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("command averageTime : " + averageTime1 + "us") } else { let tempSocket = this._socket as socket.TCPSocket; tempSocket.send({ data: `${this._command}${CRLF}`, encoding: 'utf8' }) + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("command averageTime : " + averageTime1 + "us") } }); } diff --git a/POP3Client/build-profile.json5 b/POP3Client/build-profile.json5 index 1961b19..841bc52 100644 --- a/POP3Client/build-profile.json5 +++ b/POP3Client/build-profile.json5 @@ -1,6 +1,5 @@ { "app": { - "signingConfigs": [], "compileSdkVersion": 9, "compatibleSdkVersion": 9, "products": [ diff --git a/POP3Client/entry/oh-package.json5 b/POP3Client/entry/oh-package.json5 index 6b44f32..89c1df6 100644 --- a/POP3Client/entry/oh-package.json5 +++ b/POP3Client/entry/oh-package.json5 @@ -1,12 +1,12 @@ { + "license": "", + "devDependencies": {}, + "author": "", "name": "entry", - "version": "1.0.0", "description": "Please describe the basic information.", "main": "", - "author": "", - "license": "", + "version": "1.0.0", "dependencies": { "@ohos/node_pop3": "file:../POP3" } } - diff --git a/POP3Client/entry/src/main/ets/pages/AutoLoginCommandPage.ets b/POP3Client/entry/src/main/ets/pages/AutoLoginCommandPage.ets index 509fbe7..f6f5969 100644 --- a/POP3Client/entry/src/main/ets/pages/AutoLoginCommandPage.ets +++ b/POP3Client/entry/src/main/ets/pages/AutoLoginCommandPage.ets @@ -3,6 +3,8 @@ import router from '@ohos.router' import Pop3Command from '@ohos/node_pop3' import MsgBean from '../MsgBean' +const BASE_COUNT = 1 + @Entry @Component struct AutoLoginCommandPage { @@ -13,6 +15,8 @@ struct AutoLoginCommandPage { @State selectMsgNum: number = -1 @State isListShow: boolean = false @State msgList: Array = [] + @State topLine: string = '' + controller: TextInputController = new TextInputController() async aboutToDisappear() { if (this.client) { @@ -62,15 +66,15 @@ struct AutoLoginCommandPage { this.sendSTAT() }) .margin({ top: 10 }) - Button('LAST命令(pop3暂无该指令,原库运行结果同样报错)') - .margin(20) - .height(50) - .backgroundColor(Color.Blue) - .fontColor(Color.White) - .onClick(() => { - this.sendLAST() - }) - .margin({ top: 10 }) + // Button('LAST命令(pop3暂无该指令,原库运行结果同样报错)') + // .margin(20) + // .height(50) + // .backgroundColor(Color.Blue) + // .fontColor(Color.White) + // .onClick(() => { + // this.sendLAST() + // }) + // .margin({ top: 10 }) Button('NOOP命令') .margin(20) @@ -101,6 +105,20 @@ struct AutoLoginCommandPage { this.sendLIST() }) .margin({ top: 10 }) + + TextInput({ text: this.topLine, placeholder: '输入TOP行数', controller: this.controller }) + .placeholderColor(Color.Grey) + .placeholderFont({ size: 14, weight: 400 }) + .caretColor(Color.Blue) + .width(600) + .height(40) + .margin(20) + .fontSize(14) + .fontColor(Color.Black) + .onChange((value: string) => { + this.topLine = value + }) + Button('TOP命令') .margin(20) .height(50) @@ -220,7 +238,11 @@ struct AutoLoginCommandPage { ctx.selectMsgNum = -1; try { if (ctx.client) { + let startTime1 = new Date().getTime(); let result = await ctx.client.STAT() + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("STAT averageTime : " + averageTime1 + "us") this.showToast('获取到STAT命令的结果', 'sendSTAT') if (result && result.toString() && result.toString().length > 0) { let arr = result.toString().split(' ') @@ -252,7 +274,11 @@ struct AutoLoginCommandPage { ctx.selectMsgNum = -1; try { if (ctx.client) { + let startTime1 = new Date().getTime(); let result = await ctx.client.LIST() + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("LIST averageTime : " + averageTime1 + "us") this.showToast(`获取到LIST命令的结果:${result}`, 'sendLIST') if (result && result.toString() && result.toString().length > 0) { let arr = result.toString().split(',') @@ -289,7 +315,11 @@ struct AutoLoginCommandPage { ctx.selectMsgNum = -1; try { if (ctx.client) { + let startTime1 = new Date().getTime(); let result = await ctx.client.NOOP() + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("NOOP averageTime : " + averageTime1 + "us") this.showToast('获取到NOOP命令的结果', 'sendNOOP') ctx.listData.push(`获取到NOOP命令的结果:${'\r\n'}${JSON.stringify(result)}`) } else { @@ -312,8 +342,11 @@ struct AutoLoginCommandPage { return } if (ctx.client) { - let result = await ctx.client.TOP(ctx.selectMsgNum + '') - + let startTime1 = new Date().getTime(); + let result = await ctx.client.TOP(ctx.selectMsgNum + '', parseInt(this.topLine)) + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("TOP averageTime : " + averageTime1 + "us") ctx.showToast('获取到TOP命令的结果', 'sendTOP') ctx.listData.push(`获取到TOP命令的结果:${'\r\n'}${result}`) } else { @@ -337,8 +370,11 @@ struct AutoLoginCommandPage { return } if (ctx.client) { + let startTime1 = new Date().getTime(); let result = await ctx.client.UIDL(ctx.selectMsgNum + '') - + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("UIDL averageTime : " + averageTime1 + "us") ctx.showToast('获取到UIDL命令的结果', 'sendUIDL') ctx.listData.push(`获取到UIDL命令的结果:${'\r\n'}${result}`) } else { @@ -360,8 +396,11 @@ struct AutoLoginCommandPage { ctx.selectMsgNum = -1; try { if (ctx.client) { + let startTime1 = new Date().getTime(); let result = await ctx.client.LAST() - + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("LAST averageTime : " + averageTime1 + "us") ctx.showToast('获取到LAST命令的结果', 'sendLAST') ctx.listData.push(`获取到LAST命令的结果:${'\r\n'}${result}`) } else { @@ -384,7 +423,11 @@ struct AutoLoginCommandPage { return } if (ctx.client) { + let startTime1 = new Date().getTime(); let result = await ctx.client.DELE(ctx.selectMsgNum + '') + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("DELE averageTime : " + averageTime1 + "us") ctx.showToast('获取到DELE命令的结果', 'sendDELE') ctx.listData.push(`获取到DELE命令的结果:${'\r\n'}${result}`) } else { @@ -411,7 +454,11 @@ struct AutoLoginCommandPage { let delResult = ctx.client.DELE(ctx.selectMsgNum + '') ctx.showToast('获取到RSETE命令的结果', 'sendRSET') ctx.listData.push(`发送DELE命令删除的结果:${'\r\n'}${delResult}`) + let startTime1 = new Date().getTime(); let result = await ctx.client.RSET() // 用于撤销DELE命令 所以不需要等DELE命令返回 + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("RSET averageTime : " + averageTime1 + "us") ctx.showToast('获取到RSETE命令的结果', 'sendRSET') ctx.listData.push(`发送RSET命令取消删除操作的结果:${'\r\n'}${result}`) } else { @@ -435,14 +482,17 @@ struct AutoLoginCommandPage { return } if (ctx.client) { - + let startTime1 = new Date().getTime(); let result = await ctx.client.RETR(ctx.selectMsgNum + '') + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("RETR averageTime : " + averageTime1 + "us") ctx.showToast('获取到RETR命令的结果', 'sendRETR') ctx.listData.push(`获取到RETR命令的结果,结果长度为:${'\r\n'}${result.toString().length}${'\r\n'}}`) if (result.toString().length > 1000) { ctx.listData.push(`由于RETR命令的结果太长text无法完全显示,取最后1000字节显示:${'\r\n'}${result.toString() .substring(result.toString().length - 1000, result.toString().length)}`) - }else { + } else { ctx.listData.push(`ETR命令的结果显示:${'\r\n'}${result.toString()}`) } @@ -466,8 +516,11 @@ struct AutoLoginCommandPage { try { if (ctx.client) { + let startTime1 = new Date().getTime(); const [quitInfo] = await ctx.client.QUIT(); - + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("QUIT averageTime : " + averageTime1 + "us") ctx.showToast('获取到QUIT命令的结果', 'sendQUIT') ctx.listData.push(`获取到QUIT命令的结果:${'\r\n'}${quitInfo}`) diff --git a/POP3Client/oh-package.json5 b/POP3Client/oh-package.json5 index d7426d8..9425349 100644 --- a/POP3Client/oh-package.json5 +++ b/POP3Client/oh-package.json5 @@ -1,13 +1,12 @@ { - "name": "pop3client", - "version": "1.0.0", - "description": "Please describe the basic information.", - "main": "", - "author": "", "license": "", - "dependencies": { - }, "devDependencies": { "@ohos/hypium": "1.0.6" - } + }, + "author": "", + "name": "pop3client", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} } diff --git a/SMTPClient/SMTP/oh-package.json5 b/SMTPClient/SMTP/oh-package.json5 index b60c6f4..cb0c531 100644 --- a/SMTPClient/SMTP/oh-package.json5 +++ b/SMTPClient/SMTP/oh-package.json5 @@ -1,28 +1,29 @@ { - "name": "@ohos/emailjs", - "version": "1.0.0", - "type": "module", "types": "", - "description": "send text/html emails and attachments (files, streams and strings) from node.js to any smtp server", - "main": "index.ets", - "author": "ohos_tpc", - "ohos": { - "org": "opensource" - }, - "repository": "http://gitee.com/PriLibrary/commons-net/tree/master/SMTPClient", - "license": "MIT", - "dependencies": {}, "keywords": [ "SMTP Protocol", "send email", "OpenHarmony", "HarmonyOS" ], + "author": "ohos_tpc", + "description": "send text/html emails and attachments (files, streams and strings) from node.js to any smtp server", + "ohos": { + "org": "opensource" + }, + "main": "index.ets", + "type": "module", + "repository": "http://gitee.com/PriLibrary/commons-net/tree/master/SMTPClient", + "version": "1.0.0", + "dependencies": {}, "tags": [ "Network", "Tool" ], + "license": "MIT", + "devDependencies": {}, + "name": "@ohos/emailjs", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" \u0026\u0026 exit 1" } } diff --git a/SMTPClient/SMTP/src/main/ets/client.ts b/SMTPClient/SMTP/src/main/ets/client.ts index 0fcdc35..5516398 100644 --- a/SMTPClient/SMTP/src/main/ets/client.ts +++ b/SMTPClient/SMTP/src/main/ets/client.ts @@ -4,6 +4,7 @@ import type { MessageAttachment, MessageHeaders } from './message.js'; import { Message } from './message.js'; import type { SMTPConnectionOptions } from './connection.js'; import { SMTPConnection, SMTPState } from './connection.js'; +const BASE_COUNT = 1 export type MessageCallback = ( @@ -95,7 +96,11 @@ export class SMTPClient { */ public sendAsync(msg: T) { return new Promise((resolve, reject) => { + let startTime1 = new Date().getTime(); this.send(msg, (err, message) => { + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("send averageTime : " + averageTime1 + "us") if (err != null) { reject(err); } else { diff --git a/SMTPClient/build-profile.json5 b/SMTPClient/build-profile.json5 index 5db8412..efdcc4a 100644 --- a/SMTPClient/build-profile.json5 +++ b/SMTPClient/build-profile.json5 @@ -1,6 +1,5 @@ { "app": { - "signingConfigs": [], "compileSdkVersion": 9, "compatibleSdkVersion": 9, "products": [ diff --git a/SMTPClient/entry/oh-package.json5 b/SMTPClient/entry/oh-package.json5 index 1454b35..2306c04 100644 --- a/SMTPClient/entry/oh-package.json5 +++ b/SMTPClient/entry/oh-package.json5 @@ -1,12 +1,12 @@ { + "license": "", + "devDependencies": {}, + "author": "", "name": "entry", - "version": "1.0.0", "description": "Please describe the basic information.", "main": "", - "author": "", - "license": "", + "version": "1.0.0", "dependencies": { "@ohos/emailjs": "file:../SMTP" } } - diff --git a/SMTPClient/entry/src/main/ets/pages/LoginPage.ets b/SMTPClient/entry/src/main/ets/pages/LoginPage.ets index 15d57a0..695eb04 100644 --- a/SMTPClient/entry/src/main/ets/pages/LoginPage.ets +++ b/SMTPClient/entry/src/main/ets/pages/LoginPage.ets @@ -2,6 +2,7 @@ import { AUTH_METHODS, SMTPClient } from '@ohos/emailjs' import promptAction from '@ohos.promptAction' import router from '@ohos.router' import socket from '@ohos.net.socket' +const BASE_COUNT = 1 @CustomDialog struct CustomDialogDiy { @@ -307,7 +308,7 @@ struct LoginPage { } // @ts-ignore option.secureOptions.ca[1] = ca1; - + let startTime1 = new Date().getTime(); client = new SMTPClient({ user: this.account + this.mailType, password: this.password, @@ -318,7 +319,11 @@ struct LoginPage { ssl: option, tls: undefined }); + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("new SMTPClient averageTime : " + averageTime1 + "us") } else { + let startTime1 = new Date().getTime(); client = new SMTPClient({ user: this.account + this.mailType, password: this.password, @@ -329,6 +334,9 @@ struct LoginPage { ssl: false, tls: undefined }); + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("new SMTPClient averageTime : " + averageTime1 + "us") } globalThis.client = client } diff --git a/SMTPClient/entry/src/main/ets/pages/SendMailPage.ets b/SMTPClient/entry/src/main/ets/pages/SendMailPage.ets index aa51096..6c362f4 100644 --- a/SMTPClient/entry/src/main/ets/pages/SendMailPage.ets +++ b/SMTPClient/entry/src/main/ets/pages/SendMailPage.ets @@ -2,6 +2,7 @@ import promptAction from '@ohos.promptAction' import router from '@ohos.router' import { Message, MessageAttachment, MessageHeaders } from '@ohos/emailjs' import fs from '@ohos.file.fs'; +const BASE_COUNT = 1 @Entry @@ -353,7 +354,11 @@ struct SendMailPage { subject: this.subject, attachment: this.attachment } + let startTime1 = new Date().getTime(); const message = await globalThis.client.sendAsync(msg) + let endTime1 = new Date().getTime(); + let averageTime1 = ((endTime1 - startTime1) * 1000) / BASE_COUNT; + console.log("sendAsync averageTime : " + averageTime1 + "us") this.showToast('邮件发送成功', 'sendmail-smtp') if (globalThis.client.isQuitAfterSendDone()) { globalThis.client.close(true); diff --git a/SMTPClient/oh-package.json5 b/SMTPClient/oh-package.json5 index c3481cc..59dba00 100644 --- a/SMTPClient/oh-package.json5 +++ b/SMTPClient/oh-package.json5 @@ -1,13 +1,12 @@ { - "name": "smtpclient", - "version": "1.0.0", - "description": "Please describe the basic information.", - "main": "", - "author": "", "license": "", - "dependencies": { - }, "devDependencies": { "@ohos/hypium": "1.0.6" - } + }, + "author": "", + "name": "smtpclient", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} } -- Gitee