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

8.7 KiB

Object - SMTP 邮件发送

SMTP

声明:class

用于连接 SMTP 服务器并发送邮件的内置对象

下列范例使用本机 127.0.0.1:42125 的无认证临时 SMTP 测试服务

邮件地址使用保留的 .test 域名,不会投递到公网邮箱

create()

声明:function

无参数构造函数。创建 SMTP 实例,连接参数由实例属性设置

可见性:public

create(host)

声明:function

构造函数。按 host 配置名称读取连接参数并自动连接服务器

可见性:public

参数 类型 说明
host string SMTP 配置名称。指定后从配置文件读取服务器参数并自动连接

connect()

声明:function

连接服务器。需要设置host属性。并且不能多次connect,否则第二次之后的会报错

可见性:public

返回:any

示例

obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
echo 1;
obj.disconnect();
// 输出:1

disconnect()

声明:function

断开连接

可见性:public

返回:any

示例

obj := new SMTP();
obj.host := "127.0.0.1";
obj.port := 42125;
obj.useTLS := false;
obj.connect();
obj.disconnect();
echo 1;
// 输出:1

disconnectNotifyPeer()

声明:function

断开并且通知服务器

可见性:public

返回:any

示例

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

展开用户名,例如用于邮件列表。需要服务器配置,暂不支持

可见性:public

参数 类型 说明
username string 字符串类型,展开的用户名

返回:string

login()

声明:function

登录,暂不支持。但是,在设置了Username和Password属性时,使用connect()方法就包括连接服务器和登陆功能。如需验证用户名密码可使用Authenticate()方法

可见性:public

返回:any

quickSend(a_host, a_subject, a_to, a_from, a_text)

声明:function

创建并发送一封纯文本邮件

可见性:public

参数 类型 说明
a_host string 字符串类型,服务器主机名或者地址
a_subject string 字符串类型,标题
a_to string 接受者邮件地址
a_from string 来源邮件地址
a_text string 发送的邮件的内容

返回:any

示例

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

发送邮件

可见性:public

参数 类型 说明
message mailmsg MailMsg对象,需要发送的邮件内容

返回:any

示例

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

发送命令

可见性:public

参数 类型 说明
cmd string 字符串类型,发送的命令
cmd_result string 可选。返回的结果串
ret_code string 可选。返回的代码串

返回:boolean

示例

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 服务器查询指定邮件地址是否可接收邮件,服务器可以禁用该功能

可见性:public

参数 类型 说明
username string 字符串类型,验证的用户名

返回:string

示例

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()方法

可见性:public

类型:boolean

访问:read/write

AuthType

声明:property

认证类型,0:明文用户密码,1:MD5,2:SASL认证,-1:自定义认证

可见性:public

类型:integer

访问:read/write

AuthTypeString

声明:property

自定义认证类型,仅当 AuthType 设置为-1时有效;设置为"AUTH=*":自动选择服务器支持的认证类型;多个用分号连接

可见性:public

类型:string

访问:read/write

DidAuthenticate

声明:property

是否已经验证。需要先执行Authenticate()方法验证

可见性:public

类型:boolean

访问:read

Host

声明:property

获取或设置主机名称或地址

可见性:public

类型:string

访问:read/write

LastCmdResult

声明:property

获取最后的命令执行结果

可见性:public

类型:string

访问:read

LastCmdResultCode

声明:property

获取最后的命令执行的返回码

可见性:public

类型:string

访问:read

Password

声明:property

获取或设置密码

可见性:public

类型:string

访问:read/write

Port

声明:property

获取或设置主机端口

可见性:public

类型:integer

访问:read/write

Username

声明:property

获取或设置用户名

可见性:public

类型:string

访问:read/write

UseSTARTTLS

声明:property

控制是否使用显式 TLS(即 STARTTLS 加密协议)

可见性:public

类型:boolean

访问:read/write

UseTLS

声明:property

是否采用SSL连接。采用ssl需要设置到服务器的对应端口

可见性:public

类型:boolean

访问:read/write