Files
playbook/skills/tsl-api-reference/references/codegen/builtin/object/smtp.md
T

440 lines
8.7 KiB
Markdown

# Object - SMTP 邮件发送
## `SMTP`
声明:class
用于连接 SMTP 服务器并发送邮件的内置对象
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP 创建 生成 构造函数 实例化 new -->
下列范例使用本机 `127.0.0.1:42125` 的无认证临时 SMTP 测试服务
邮件地址使用保留的 `.test` 域名,不会投递到公网邮箱
### `create()`
声明:function
无参数构造函数。创建 SMTP 实例,连接参数由实例属性设置
<!-- tags: Object SMTP 邮件发送 创建 生成 对象 实例 邮件 POP3 IMAP -->
可见性:public
### `create(host)`
声明:function
构造函数。按 host 配置名称读取连接参数并自动连接服务器
<!-- tags: Object SMTP 邮件发送 创建 生成 对象 实例 邮件 POP3 IMAP -->
可见性:public
| 参数 | 类型 | 说明 |
| ------ | ------ | ------------------------------------------------------- |
| `host` | string | SMTP 配置名称。指定后从配置文件读取服务器参数并自动连接 |
### `connect()`
声明:function
连接服务器。需要设置host属性。并且不能多次connect,否则第二次之后的会报错
<!-- tags: Object SMTP 邮件发送 连接 登录 对象 实例 邮件 POP3 IMAP -->
可见性:public
返回:any
#### 示例
```tsl
obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
echo 1;
obj.disconnect();
// 输出:1
```
### `disconnect()`
声明:function
断开连接
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP -->
可见性:public
返回:any
#### 示例
```tsl
obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
obj.disconnect();
echo 1;
// 输出:1
```
### `disconnectNotifyPeer()`
声明:function
断开并且通知服务器
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP -->
可见性:public
返回:any
#### 示例
```tsl
obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
obj.disconnectNotifyPeer();
echo 1;
// 输出:1
```
### `expand(username)`
声明:function
展开用户名,例如用于邮件列表。需要服务器配置,暂不支持
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP -->
可见性:public
| 参数 | 类型 | 说明 |
| ---------- | ------ | ------------------------ |
| `username` | string | 字符串类型,展开的用户名 |
返回:string
### `login()`
声明:function
登录,暂不支持。但是,在设置了Username和Password属性时,使用connect()方法就包括连接服务器和登陆功能。如需验证用户名密码可使用Authenticate()方法
<!-- tags: Object SMTP 邮件发送 连接 登录 对象 实例 邮件 POP3 IMAP -->
可见性:public
返回:any
### `quickSend(a_host, a_subject, a_to, a_from, a_text)`
声明:function
创建并发送一封纯文本邮件
<!-- tags: Object SMTP 邮件发送 发送 提交 对象 实例 邮件 POP3 IMAP -->
可见性:public
| 参数 | 类型 | 说明 |
| ----------- | ------ | -------------------------------- |
| `a_host` | string | 字符串类型,服务器主机名或者地址 |
| `a_subject` | string | 字符串类型,标题 |
| `a_to` | string | 接受者邮件地址 |
| `a_from` | string | 来源邮件地址 |
| `a_text` | string | 发送的邮件的内容 |
返回:any
#### 示例
```tsl
obj := new SMTP();
obj.port := 42125;
obj.useTLS := false;
echo obj.quickSend(
"127.0.0.1",
"TSL quick test",
"recipient@example.test",
"sender@example.test",
"test body"
), "\n";
// 输出:1
```
### `send(message)`
声明:function
发送邮件
<!-- tags: Object SMTP 邮件发送 发送 提交 对象 实例 邮件 POP3 IMAP -->
可见性:public
| 参数 | 类型 | 说明 |
| --------- | ------- | ------------------------------- |
| `message` | mailmsg | MailMsg对象,需要发送的邮件内容 |
返回:any
#### 示例
```tsl
obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
msg := new MailMsg();
msg.subject := "TSL send test";
msg.body := "test body";
msg.sender := "sender@example.test";
msg.recipients := "recipient@example.test";
echo obj.send(msg), "\n";
obj.disconnect();
// 输出:0
```
### `sendCmd(cmd, cmd_result, ret_code)`
声明:function
发送命令
<!-- tags: Object SMTP 邮件发送 发送 提交 对象 实例 邮件 POP3 IMAP -->
可见性:public
| 参数 | 类型 | 说明 |
| ------------ | ------ | ---------------------- |
| `cmd` | string | 字符串类型,发送的命令 |
| `cmd_result` | string | 可选。返回的结果串 |
| `ret_code` | string | 可选。返回的代码串 |
返回:boolean
#### 示例
```tsl
obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
obj.sendCmd("HELO 127.0.0.1\r\n", cmd_result, ret_code);
echo cmd_result;
obj.disconnect();
// 输出:localhost
```
### `verify(username)`
声明:function
向 SMTP 服务器查询指定邮件地址是否可接收邮件,服务器可以禁用该功能
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP -->
可见性:public
| 参数 | 类型 | 说明 |
| ---------- | ------ | ------------------------ |
| `username` | string | 字符串类型,验证的用户名 |
返回:string
#### 示例
```tsl
obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
echo obj.verify("recipient@example.test");
obj.disconnect();
// 输出:recipient@example.test <recipient@example.test>
```
### `Authenticate`
声明:property
服务器验证。验证用户名和密码是否能登陆smtp服务器。使用之前需要先使用connect()方法
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:boolean
访问:read/write
### `AuthType`
声明:property
认证类型,0:明文用户密码,1:MD5,2:SASL认证,-1:自定义认证
<!-- tags: Object SMTP 邮件发送 摘要 哈希 散列 digest hash 对象 实例 邮件 POP3 -->
可见性:public
类型:integer
访问:read/write
### `AuthTypeString`
声明:property
自定义认证类型,仅当 AuthType 设置为-1时有效;设置为"AUTH=*":自动选择服务器支持的认证类型;多个用分号连接
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP AUTH -->
可见性:public
类型:string
访问:read/write
### `DidAuthenticate`
声明:property
是否已经验证。需要先执行Authenticate()方法验证
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:boolean
访问:read
### `Host`
声明:property
获取或设置主机名称或地址
<!-- tags: Object SMTP 邮件发送 获取 查询 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:string
访问:read/write
### `LastCmdResult`
声明:property
获取最后的命令执行结果
<!-- tags: Object SMTP 邮件发送 获取 查询 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:string
访问:read
### `LastCmdResultCode`
声明:property
获取最后的命令执行的返回码
<!-- tags: Object SMTP 邮件发送 获取 查询 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:string
访问:read
### `Password`
声明:property
获取或设置密码
<!-- tags: Object SMTP 邮件发送 获取 查询 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:string
访问:read/write
### `Port`
声明:property
获取或设置主机端口
<!-- tags: Object SMTP 邮件发送 获取 查询 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:integer
访问:read/write
### `Username`
声明:property
获取或设置用户名
<!-- tags: Object SMTP 邮件发送 获取 查询 对象 实例 邮件 POP3 IMAP -->
可见性:public
类型:string
访问:read/write
### `UseSTARTTLS`
声明:property
控制是否使用显式 TLS(即 STARTTLS 加密协议)
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP TLS STARTTLS -->
可见性:public
类型:boolean
访问:read/write
### `UseTLS`
声明:property
是否采用SSL连接。采用ssl需要设置到服务器的对应端口
<!-- tags: Object SMTP 邮件发送 对象 实例 邮件 POP3 IMAP SSL -->
可见性:public
类型:boolean
访问:read/write