十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
方法1 安装sendmail即可使用, mail -s "test" user@sohu.com content.txt
创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为市中企业提供专业的网站建设、网站制作,市中网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。
方法2。利用外部的smpt服务器
而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的:
修改/etc/nail.rc (/etc/mail.rc)
set from=fromUser@domain.com smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login
说明:
from是发送的邮件地址
smtp是发生的外部smtp服务器的地址
smtp-auth-user是外部smtp服务器认证的用户名
smtp-auth-password是外部smtp服务器认证的用户密码
smtp-auth是邮件认证的方式
配置成功后,就可以使用了
可以发送一封邮件测试一下:
mail -s "test" username@163.com content.txt 其中-s后面的是邮件标题,user@sohu.com是收件人地址,content.txt里面是邮件正文
mail 命令的使用
mailq可以查看系统队列
从后台进去 系统设置-邮件服务器设置。
一、邮件发送方式
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.com。(这里可以根据不同的邮件服务在网上可以搜索到相应的服务器地址)。
服务器端口:25。
邮件发送帐号:填写所使用的邮件地址就可以。
帐号密码:就是所使用邮件的登录密码。
邮件回复地址:就是希望客户给你回复邮件的地址,这里要注意发送邮件地址要和这个回复邮件地址保持一致。
邮件编码:一般这里选择国际化编码(utf8)。
邮件地址:为了测试上面的邮件配置是否成功,这里必需填写您其他的邮件地址,填写完毕后点击 发送测试邮件 测试一下。点击后这里会有即时的弹出窗口反馈邮件是否配置成功的提示信息。
163
'host' = 'smtp.163.com',
'port' = 587,
'from' = array('address' = 'li_go@163.com', 'name' = 'adminmark'),
'username' = 'li_go',
'password' = 'XXXXXXXX',
Connection to tcp://smtp.163.com:587 Timed Out
'host' = 'smtp.qq.com',
'port' = 587,
'from' = array('address' = '53957105@qq.com', 'name' = 'adminmark'),
'username' = '5395d7105',
'password' = 'XXXXXXXX',
Failed to authenticate on SMTP server with username "53957105" using 1 possible authenticators
gmail
'host' = 'smtp.gmail.com',
'port' = 587,
'from' = array('address' = 'li53957105@gmail.com', 'name' = 'adminmark'),
'username' = 'li_go@163.com',
'password' = 'XXXXXX',
Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 ... 14257 y1sm2734628pbw.89 - gsmtp "
一、手机端操作步骤:
1、点击右下角的【应用程序】;
2、点击【电子邮件】;
3、选择【其他】;
4、设置电子邮件,输入【电邮地址】和【密码】(以Gmail为例),点【手动设置】;
5、选择【微软Exchange ActiveSync帐户】;
6、设置【Exchange服务器】(以Gmail为例:m.google.com),【下一步】;
7、点【确认】等待一会,手机会联网自动获取电邮配置;
8、设置同步项目(联系人、日历等),【下一步】;
9、设置帐户名称(可选),点【完成】。
二、企业邮箱客户端设置:
1、POP3/SMTP协议:
1)、接收邮件服务器:pop.exmail.qq.com ,使用SSL,端口号995;
2)、发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465。
2、海外邮件服务接收器:
1)、接收邮件服务器:hwpop.exmail.qq.com ,使用SSL,端口号995;
2)、发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465。
2、IMAP协议:
1)、接收邮件服务器:imap.exmail.qq.com ,使用SSL,端口号993;
2)、发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465。
4、海外用户服务器:
1)、接收邮件服务器:hwimap.exmail.qq.com ,使用SSL,端口号993;
2)、发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465。
5、账户名:企业邮箱账户名,账户名填写完整的邮件地址。
6、密码:企业邮箱密码。
7、电子邮件地址:企业邮箱的完整邮件地址。
接收和发送邮件的服务器地址是不能乱写的,虽然各邮箱设置方法大同小异,只是不同服务器特征字符不同,但还要根据不同邮箱设置不同的SMTP地址。具体方式如下:
一、163的邮箱:
打开 Outlook(即 Outlook Express),点击“工具”,然后选“帐户”。
单击“添加”,在弹出菜单中选择“邮件”,进入 Internet 连接向导。
在“显示名”字段中输入真实姓名,然后单击“下一步”。
在“电子邮件地址”字段中输入完整 163 免费邮地址(you@163.com),然后单击“下一步”。
在“接收邮件(pop、IMAP或HTTP)服务器”字段中输入 pop.163.com。在“发送邮件服务器 (SMTP)”字段中输入:smtp.163.com,单击“下一步”。
在“帐户名”字段中输入163免费邮用户名(仅输入@ 前面的部分)。在“密码”字段中输入邮箱密码,然后单击“下一步”。
点击“完成”。
在 Internet 帐户中,选择“邮件”选项卡,选中刚才设置的帐号,单击“属性”。
在属性设置窗口中,选择“服务器”选项卡,勾选“我的服务器需要身份验证”,并点击旁边的“设置”按钮。
登录信息选择“使用与接收邮件服务器相同的设置”,确保您在每一字段中输入了正确信息。
点击“确定”。
二、QQ邮箱
QQ邮箱设置很简单,点击设置,切换到账户设置,拉到下面,点击POP3/SMTP 服务右边的开启。
然后在邮箱客户端,比如Foxmail添加QQ邮箱账户,一般会自动识别POP3 和 SMTP 服务器地址,如果没有识别到,可以按如下地址设置:
注:
1、SMTP服务器需要身份验证。
2、如果是设置POP3和SMTP的SSL加密方式,则端口如下:
1)POP3服务器(端口995);2)SMTP服务器(端口465或587)。
三、如果是其它的邮箱,比如sohu、sina只需要将163换成sina、sohu就可以了。
看了下smtp的包,应该是不能发带附件的,话说你收到过人家通过代码发送的邮件有带附件的么
本节提供了SMTP中的一些过程。头一个说明的是基本发送过程(定义为发送操作)。下来描述向前传送邮件,确认邮箱名称和扩展邮件列表,发送到终端和打开关闭交换。在本节的最后是对中断,邮件域的说明。本节的例子只是一部分命令和应答的序列,完整的例子见附录F。 在SMTP发送操作中有三步,操作由MAIL命令开始给出发送者标识。一系列或更多的RCPT命令紧跟其后,给出了接收者信息,然后是DATA命令列出发送的邮件内容,最后邮件内容指示符确认操作。
过程中的第一步是MAIL命令, reverse-path 包括源邮箱。
MAIL FROM:
此命令告诉接收者新的发送操作已经开始,请复位所有状态表和缓冲区。它给出反向路径以进行错误信息返回。如果请求被接收,接收方返回一个250 OK应答。中不止包括了邮箱,它包括了主机和源邮箱的反向路由,其中的第一个主机就是发送此命令的主机。
过程中的第二步是发送RCPT命令。
RCPT TO:
此命令给出向前路径标识接收者,如果命令被接收,接收方返回一个250 OK应答,并存储向前路径。如果接收者未知,接收方会返回一个550 Failure应答。此过程可能会重复若干次。
不仅包括邮件,它是主机和目的邮箱的路由表,在其中的第一个主机就是接收命令的主机。
过程中的第三步是发送DATA命令。
DATA
如果命令被接收,接收方返回一个354 Intermediate应答,并认定以下的各行都是信件内容。当信件结尾收到并存储后,接收者发送一个250 OK应答。因为邮件是在传送通道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号过滤掉,以不影响正常的数据。
注意:邮件内容包括如下提示:Date, Subject, To, Cc, From。
邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了。如果此命令被接收,接收方返回一个250 OK应答。DATA命令仅在邮件操作未完成或源无效的情况下失败。
上面所述的过程是一个发送操作。这些命令只能以上面的顺序使用。下例表示了在一个发送操作中这些命令的使用。
SMTP过程例子 此例是在Alpha。ARPA主机的Smith发送邮件给Beta. ARPA主机的Jones,Green和Brown的,这里假定主机Alpha与主机Beta直接相连。
S: MAIL FROM:
R: 250 OK
S: RCPT TO:
R: 250 OK
S: RCPT TO:
R: 550 No such user here
S: RCPT TO:
R: 250 OK
S: DATA
R: 354 Start mail input; end with .
S: Blah blah blah...
S: ...等等
S: .
R: 250 OK
此信被前两个人接收,而第三个人在此主机上没有邮箱。 下面是一些中目的地址不正确的,但接收者知道正确的目的地址的例子。在这些例子中,下列应答之一应该允许发送方与获得正确地址。
251:用户不在本地;将向前发送到。
这个应答意味着,接收方SMTP知道用户的邮箱在另外的主机上,而且意味着将在未来使用正确的转向路径。请注意,主机或者用户,或者它们两者是不同的。接收方负责传送消息。
551 :用户非本地,请尝试
这个应答意味着接收SMTP知道用户的邮箱在另外的主机上,并意味着使用了正确的转发路径。注意请注意,主机或者用户,或者它们两者是不同的。接收方拒绝接收此用户的信件,发送者必须根据提供的信息重新发送或者向原发送者返回错误信息。
下例显示了这些响应的应用。
转发的例子
S: RCPT TO:
R: 251 User not local; will forward to
或者
S: RCPT TO:
R: 551 User not local; please try SMTP提供了另外的确认用户名和扩展邮件列表的功能。这些功能由VREF和EXPN命令完成,它们都以字符串为参数。对于VREF命令,字符串参数指的是用户名,对此命令的响应要包括用户的命名和用户的邮箱。对于EXPN命令,字符串参数指的是邮件列表,对此命令的响应多于一个,它们要包括所有列表中用户的命名和他们的邮箱。
“用户名”是一个多余的项目,它是故意被加上的。如果主机采用VREF命令和EXPN命令,最后本地邮箱必须提供用户名使它被主机确认。如果主机选择由另外的字符串作为用户名,也是允许的。
在一些主机中,邮箱列表和一个邮箱的代名有一点不清楚,因为一般的数据结构可能包括两种类型的入口。如果要发出对邮件列表的确认,应该给出确定响应。在接收到这个消息后,主机将把邮件传送到列表上所有的地址上去,如果没有接收到确定响应,就会报告错误。例如,550 That is a mail list, not a user name。如果请求用于扩展一个用户名,可能通过返回包括一个名字的列表来形成确定响应,如果没有接收到确定响应,就会报告错误。(例如, 550 That is a user name, not a mailing list)。
在多个响应的情况下(通常是对于EXPN而言的),每个应答指定一个邮箱。在模糊请求的情况下,例如VRFY Smith,这里两个Smith的响应必须是553 User ambiguous。
确认用户名的情况如下例所示:例3:
确认用户名
S: VRFY Smith R: 250 Fred Smith
或者
S: VRFY Smith
R: 251 User not local; will forward to
或者
S: VRFY Jones
R: 550 String does not match anything.
或者
S: VRFY Jones
R: 551 User not local; please try
或者
S: VRFY Gourzenkyinplatz
R: 553 User ambiguous.
邮箱列表要求多个响应的情况如下例所示:
扩展邮件列表的例子
S: EXPN Example-People
R: 250-Jon Postel
R: 250-Fred Fonebone
R: 250-Sam Q. Smith
R: 250-Quincy Smith @USC-ISIF. ARPA:Q-Smith@ISI-VAXA. ARPA
R: 250-
R: 250
或者
S: EXPN Executive-Washroom-List
R: 550 Access Denied to You.
VERF和EXPN命令的字符串命令参数因为具体实现的不同而不能再加以限制了。在一些系统上,EXPN命令的参数可能是一个包含邮件列表的文件名,但是在Internet上有许多不同的文件结构。
VRFY和EXPN命令在最小实现中并不包括,当它们实现时,它们也不要求被在传送间实现。 SMTP的主要目的是将邮件发送到用户的邮箱中。由一些主机提供的类似的功能是把邮件送至用户的终端(如果用户正打开终端)。将邮件送到用户的邮箱中称为发送信件(mailing);而送至用户终端则称之为获得信件(sending)。因为在一些主机上,这两者的实现十分类似,所以它们同时被放入了SMTP中。然而,获得信件命令在SMTP的最小实现中是没有的。用户应该具有控制向终端上写信息的能力。大部分主机允许用户接受或者拒绝类似的信息。
下面三个命令被定义来支持获得信件。它们被用于邮件命令而不是MAIL命令,指示接收SMTP这种操作的特殊意义:
SEND FROM:
SEND命令要求邮件内容直接传送到用户终端。如果用户未打开终端(或者未接收终端信息),450响应将返回一个RCPT命令。如果信息被成功发送,此操作成功。
SOML FROM:
Send或者MaiL命令要求将邮件内容直接发送到用户的终端上(如果用户在终端上)。如果用户不在终端上,邮件内容直接进入邮箱。如果邮件被发送到用户终端或者用户信箱,发送操作成功。
SAML FROM:
Send和MaiL命令要求邮件内容直接发送到用户终端上(如果用户在终端上)。不管怎么样,信件都会进入信箱。如果信件进入信箱,发送操作成功。
用于MAIL命令的响应和这些命令的响应相同。 当打开传送通道时,要交换一些信息以确定双方的身份。以下的命令是用于打开和关闭的:
HELO
QUIT
在HELLO命令中,主机自己发送命令,此命令可以被解释为:“你好,我是XX”。 转发路径可能是如下格式:@ONE,@TWO:JOE@THREE,在这里,ONE,TWO和THREE是主机。这种格式用于强调地址和路径的区别。邮箱是绝对地址,路径是关于如何到达的信息。这两个概念不应该被混淆。
概念上,转发路径的元素被移动到回复路径作为从一个SMTP服务器到另一个SMTP服务器的信息。回复路径是一个反向数据源路径,例如从当前信息的位置到发起者的位置。当一个SMTP服务器从转发路径中删除自己的标记并将它插入到回复路径中时,它必须使用它发送环境能够理解的名称来进行,以防它的名称在不同的环境中被理解为不同的名字。
如果当SMTP接收到信息的转发路径的第一个元素不是此SMTP的标记时,此元素不从转发路径中删除,而被用来决定下一个应该发送到的SMTP服务器。在任何情况下,SMTP都将自己的标记加入反向路径中。
使用源路径时,接收SMTP接收转发的邮件并发送到另一接收SMTP服务器上。接收服务器可以接受或拒绝转发本地用户的邮件。接收SMTP通过将它自己的标记从转发路径移至回复路径的开始处来改变命令参数。这时,接收SMTP变成了发送SMTP,也就建立了到下一个转发路径中SMTP的通道,然后,它向这个SMTP发送邮件。
在回复路径上的头一个主机应是发送SMTP命令的主机,在转发路径上第一个主机应是接收SMTP命令的主机。
注意:转发路径和回复路径出现在SMTP命令和应答中,但不一定要出现在信息中。也就是说,没有必须要这样的路径特别这种格式出现在信息头的To:,From:和CC:等域中。
如果SMTP服务器接受了转发任务,但后来它发现因为转发路径不正确或者其它原理无法发送邮件,它必须建立一个undeliverable mail信号,将它此信号送到此信的发主者那里。
此信号必须是从此主机的SMTP服务上发出的,当然了,此服务器不应该再报告出错信息的错误。一种阻止这种出错报告循环的情况是在信号的邮件命令的回复路径上置空。在传送此信息时,允许将回复路径也置为空。一个MAIL命令后的回复路径为空表现为如下形式:
MAIL FROM:
下例中显示了不可传送的邮件信息。此信息是对从HOSTW上的JOE发出的邮件经过在HOSTX需要经过HOSTZ到达HOSTY时出错的回应。我们看到的例子是在HOSTX和HOSTY之间发生的。
不可传送邮件信息的例子
S: MAIL FROM:
R: 250 ok
S: RCPT TO:@HOSTX. ARPA:JOE@HOSTW. ARPA
R: 250 ok
S: DATA
R: 354 send the mail data, end with .
S: Date: 23 Oct 81 11:22:33
S: From: SMTP*HOSTY. ARPA
S: To: JOE* HOSTW. ARPA
S: Subject: Mail System Problem
S:
S: Sorry JOE, your message to SAM @HOSTZ .ARPA lost.
S: HOSTZ. ARPA said this:
S: 550 No Such User
S: .
R: 250 ok 域是被引入ARPA Internet邮件系统的。使用域可以使地址空间从一个平面的普通字符串主机名变成全局地址的一个层次结构。主机由一个域名取代,起始主机是由一系列元串组成,它们由逗号按最特殊到一般的顺序排列。
无论域名在SMTP中如何使用,只有正式的名称才可以被使用,不可以使用假名或昵称。 TURN命令可以用来改变在传输信道上通信的程序的角色。如果程序A是发送SMTP,它发送TURN命令并接到OK应答(250)后,它就变为接收SMTP了。同理,程序B也可以从接收SMTP变为发送SMTP。若要拒绝改变角色,接收方可以发送502作为应答。
注意:此命令是可选的。在使用TCP的传输信道时,一般不使用此命令。然而,当建立传输信道的代价比较大时,此命令很有用。例如,此命令可以支持一般公共交换电话系统作为传输信道。