SMTP协议简介 2001-07-09· ·--··vbeden SMTP被用来在因特网上传递电子邮件。文件RFC821规定了该协议的所有细节。但是你只须记住下面的内容--该协议的基本命令和方法就行了。 协议的原理很简单。无非是一个客户端计算机向服务器发送命令,然后服务器向客户端计算机返回一些信息。客房端发送的命令以及服务器的回应都是字符串,你并不需要特别的软件就能读出它们。如果你仔细看过Winsock Terminal示例程序的源代码,你就会发现这一点。现在让我们用这个示例程序来向自己发一封电子邮件吧。 运行示例程序,单击\"Connect\"按钮,在\"Connect to...\"对话框中输入你的电子邮件服务器的地址,选择SMTP选项。最后按\"Connect\"按钮。如果连接成功,Winsock控件会产生Connected事件,在状态栏中也可看到连接成功的信息。在主文本窗口中你将看到从服务器返回的文本。该文本包含一个三位数的代码及描述,例如: 220-ns.cinfo.ru Sendmail 8.6.12/8.6.9 ready at Wed, 22 Apr 1998 22:54:41 +0300 220 ESMTP spoken here 不必太过留意这些描述。因为这些描述可能会因服务器而异。你只须要知道代码所代表的意思就行了。代码220表示成功建立连接,服务器等待你的第一个命令。 向服务器传递的第一个命令是HELO. 该命令包含一个参数,即你的邮箱名。 HELO oleg 注意: 在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可以把它忽略掉。 如果命令成功,服务器会返回一个代码为250的回应。下一步用MAIL FROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参数。 MAIL FROM: oleg@vbip点抗 发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPT TO命令了。该命令以收信人地址为参数,一看便知是告诉服务器你想将邮件发到收信人地址处。 RCPT TO: somebody@domain点抗 如果你想将邮件发给多个收件人的话。你需要多次使用RCPT TO命令,对每个命令,服务器都会返回代码为250的回应。 现在你可以向服务器发送邮件正文了。用DATA命令告诉服务器以下的内容为邮件正文。在你从服务器收到代码为354的回应后,你就可以发送邮件正文了。邮件按行发送,每行邮件以一个无回车的换行符结束(在VB中就是vbLf)示例程序知道何时使用换行符,何时使用回车加换行符。所以你只须按回车键就行了。下面是一个例子: Subject: My first e-mail message. First line of a message. Second line. . 注意上面最后一行的最后一个字符是一个小数点。这是正文结束的标志。用VB代码表示就是vbLf \".\" vbCrLf. 服务器收到这个标志后,就会立即向你返回一个代码为250的回应以及该邮件的唯一ID号。 250 WAA10568 Message accepted for delivery 任务完成了,你可以继续发送下封邮件,也可以断开同服务器的连接。如果要断开同服务器的连接就用QUIT命令。在这种情况下,服务器会返回一个代码为221的回应并断开连接。 QUIT 221 ns.cinfo.ru closing connection
创新互联是一家专注于成都网站制作、做网站与策划设计,忻州网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:忻州等地区。忻州做网站价格咨询:028-86922220
我的服务器用的是小鸟云的,性能稳定,访问很流畅。
看了下smtp的包,应该是不能发带附件的,话说你收到过人家通过代码发送的邮件有带附件的么
无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道。
这种类型的通道要求发送goroutine和接收goroutine同时准备好,才能完成发送和接收操作。否则,通道会导致先执行发送或接收操作的 goroutine 阻塞等待。
这种对通道进行发送和接收的交互行为本身就是同步的。其中任意一个操作都无法离开另一个操作单独存在。
阻塞:由于某种原因数据没有到达,当前协程(线程)持续处于等待状态,直到条件满足,才接触阻塞。
同步:在两个或多个协程(线程)间,保持数据内容一致性的机制。
下图展示两个 goroutine 如何利用无缓冲的通道来共享一个值:
在第 1 步,两个 goroutine 都到达通道,但哪个都没有开始执行发送或者接收。
在第 2 步,左侧的 goroutine 将它的手伸进了通道,这模拟了向通道发送数据的行为。这时,这个 goroutine 会在通道中被锁住,直到交换完成。
在第 3 步,右侧的 goroutine 将它的手放入通道,这模拟了从通道里接收数据。这个 goroutine 一样也会在通道中被锁住,直到交换完成。
在第 4 步和第 5 步,进行交换,并最终,在第 6 步,两个 goroutine 都将它们的手从通道里拿出来,这模拟了被锁住的 goroutine 得到释放。两个 goroutine 现在都可以去做别的事情了。
如果没有指定缓冲区容量,那么该通道就是同步的,因此会阻塞到发送者准备好发送和接收者准备好接收。
无缓冲channel: —— 同步通信
从后台进去 系统设置-邮件服务器设置。
一、邮件发送方式
ECShop 2.5支持如下二种邮件发送方式:
1、采用服务器内置的 Mail 服务(推荐此方式),见图 1 所示:
介绍:这种方式是使用 PHP 的函数发送邮件,需要服务器上安装 mail 系统。一般的虚拟主机都内置邮件系统。因此强烈推荐使用这种方式。
2、采用其他的 SMTP 服务(支持 SMTP 验证),见图 2 所示:
介绍:这种方式适用于 Windows 或者 Linux 类服务器使用(适合于虚拟主机或者独立主机使用)。需要站长拥有一个 SMTP 服务器,例如新浪的 SMTP 服务器。这里说明一点:发信人邮件地址 - 如果您填写的邮件服务器需要验证, 必须填写此服务器的邮件地址。
二、两种不同发送方式的配置
1、采用服务器内置的 Mail 服务,见图 3 所示:
选择此发送方式时 发送邮件服务器地址和服务器端口这两项空着不用填写。
邮件发送帐号:填写所使用的邮件地址就可以。
帐号密码:就是所使用邮件的登录密码。
邮件回复地址:就是希望客户给你回复邮件的地址,这里要注意发送邮件地址要和这个回复邮件地址保持一致。
邮件编码:一般这里选择国际化编码(utf8)。
邮件地址:为了测试上面的邮件配置是否成功,这里必需填写您其他的邮件地址,填写完毕后点击 发送测试邮件 测试一下。点击后这里会有即时的弹出窗口反馈邮件是否配置成功的提示信息。
2、采用其他的 SMTP 服务,见图 4 所示:
邮件服务器地址:就是邮件外发服务器,这里以163的邮箱为例。所以邮件的外发地址是 smtp.163点抗 。(这里可以根据不同的邮件服务在网上可以搜索到相应的服务器地址)。
服务器端口:25。
邮件发送帐号:填写所使用的邮件地址就可以。
帐号密码:就是所使用邮件的登录密码。
邮件回复地址:就是希望客户给你回复邮件的地址,这里要注意发送邮件地址要和这个回复邮件地址保持一致。
邮件编码:一般这里选择国际化编码(utf8)。
邮件地址:为了测试上面的邮件配置是否成功,这里必需填写您其他的邮件地址,填写完毕后点击 发送测试邮件 测试一下。点击后这里会有即时的弹出窗口反馈邮件是否配置成功的提示信息。
163
'host' = 'smtp.163点抗 ',
'port' = 587,
'from' = array('address' = 'li_go@163点抗 ', 'name' = 'adminmark'),
'username' = 'li_go',
'password' = 'XXXXXXXX',
Connection to tcp://smtp.163点抗 :587 Timed Out
'host' = 'smtp.qq点抗 ',
'port' = 587,
'from' = array('address' = '53957105@qq点抗 ', 'name' = 'adminmark'),
'username' = '5395d7105',
'password' = 'XXXXXXXX',
Failed to authenticate on SMTP server with username "53957105" using 1 possible authenticators
gmail
'host' = 'smtp.gmail点抗 ',
'port' = 587,
'from' = array('address' = 'li53957105@gmail点抗 ', 'name' = 'adminmark'),
'username' = 'li_go@163点抗 ',
'password' = 'XXXXXX',