1
solupro 2013-06-25 09:49:35 +08:00
这个是要本地smtp服务支持的吧
|
2
meteor2013 OP @solupro
必须要本地smtp服务吗? 为什么php.ini 里面的 [mail function], 如果设置For Unix 就不需要设置SMTP 呢? 是不是可以选SMTP 发送,也可以sendmail发送? 有点晕了。。。。。 [mail function] ; For Win32 only. SMTP = localhost smtp_port = 25 ; For Win32 only. ;sendmail_from = [email protected] ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = |
3
lichao 2013-06-25 10:01:38 +08:00
你声称邮件来自 example.com,那你机器的 hostname 是否是 example.com 呢,收邮件的时候会去验证的。否则你能以任何人的名义发邮件了
|
4
meteor2013 OP @lichao 发件人地址没有关系。只要收件人地址对了就可以。
我在MT(http://mediatemple.net/)上的服务器上运行 上面的示例代码, 就可以发到我的Gmail邮箱。 现在的问题是我自己架设的2台电脑发出去收不到 (1. Mac Pro上mountain lion运行的MAMP 2. Windows 7上运行的XAMPP) |
5
lichao 2013-06-25 10:15:35 +08:00
@meteor2013 发件人地址没有关系??
不认同你的看法。Gmail 会去验证你邮箱的 domain 跟你发邮件的 IP 是否匹配的。否则你可以用 任意如:[email protected] 的发件人地址来发邮件了。 |
6
wtbhk 2013-06-25 10:36:43 +08:00
@meteor2013 这么草率的就说发件地址没关系?我记得我当时学习邮件协议的时候就试过了,发件地址还真有关系,但具体取决于收件邮箱服务器的规则。
|
7
solupro 2013-06-25 10:42:43 +08:00
@meteor2013
嗯,配置默认就是监听localhost的25端口了吧。 至于调用远程服务器的smtp服务发送邮件,可以看看这里 http://email.about.com/od/emailprogrammingtips/qt/Configure_PHP_to_Use_a_Remote_SMTP_Server_for_Sending_Mail.htm 但是如果远程服务器需要验证好像就不能通过mail函数发送了,里面有相关链接你可以参考一下! |
8
jerry 2013-06-25 10:46:44 +08:00
需要smtp服务支持的,linux一般默认都安装了sendmail做MTA
|
9
meteor2013 OP @wtbhk @lichao
各位大哥,我是真用example.com发到我gmail了啊。 请看下图: [img]http://s8.postimg.org/z5xxdxa3p/20130624223627.jpg[/img] |
10
meteor2013 OP @jerry 看来问题真是smtp? 就是说一定要设置smtp服务?
在 MAMP上怎么装sendmail做MTA呢? |
11
lichao 2013-06-25 11:07:28 +08:00
@meteor2013 那说明 Gmail 过滤规则有时候会变(你即使受到了,应该也是在垃圾箱吧),我几年前还伪装成比尔盖茨的邮件地址发邮件给我同学来着,但是现在肯定行不通了。
|
12
solf 2013-06-25 12:11:40 +08:00
linux 下的sendmail或者postfix关了,启动一下这个service吧。
Mac不知道有没有这个MTA |
13
darasion 2013-06-25 12:17:50 +08:00
|
14
haijd 2013-07-02 17:58:23 +08:00
发邮件还是建议使用 SMTP 协议,注册一个正规的邮箱来发,不然很容易被当做垃圾邮件过滤掉的。
Gmail少量测试还可以,数量多以后一样会被判为垃圾邮件。 |
15
code4craft 2013-07-03 07:37:08 +08:00
程序内调用的话,应该也是用SMTP协议发送(不清楚PHP,但是如果之前发送收到了,那应该就是对的),跟本地搭建MTA的效果差距不大。
SMTP本身不复杂,但是邮件运营方的过滤策略就比较复杂了。抛开内容不谈,大的运营商都会根据发信IP进行过滤,你可以在gmail里选一封邮件,显示原始邮件,`Received: from`一栏就能说明问题了。你这样的邮件很可能已经被gmail拒收了。 你可以本地搭建一个接收服务器(postfix之类的),然后测试一下。 |
16
gdtv 2013-07-04 13:06:17 +08:00
你电脑上必须要有邮件服务器才行,
我是windows7+xampp php.ini 里面的 [mail function]不用修改,用默认的设置就行 在win7里运行1st smtp server这个简单的邮件服务器软件,打开就行,不用设置,下载地址自己去谷歌一下。 然后就可以在php里直接用mail()函数发送了,并且1st smtp server还能看到出错信息,方便调试。 如果你电脑上没有邮件服务器,就要用smtp方式发送,要修改php.ini 里面的 [mail function]或者在php里用代码实现。 |
18
clowwindy 2013-07-04 13:25:33 +08:00
1. 本地要有 sendmail。
2. 生产环境要支持 SPF 和 DKIM,或者找邮件服务商,比如 Mailgun 帮你发。否则多半会进垃圾邮件,或者垃圾邮件都没进。 |
19
vilic 2013-07-04 13:32:10 +08:00
服务器信誉问题?对应发件域名添加相关txt记录应该就可以了。就像hotmail验证其他邮箱之后可以发送对应邮件一样,别个收件的相信那个发件服务器。
|
20
shixinyu 2013-07-04 23:25:30 +08:00
现在自建邮件服务器不靠谱的地方就在于发出去了,对方不一定能收到,不是被对方邮箱服务商拒收就是放入垃圾箱了。所以应该考虑使用EDM商,非专业的用QQ企业邮箱绑定自己域名来走SMTP协议发送,专业的用搜狐的SendCloud(http://sendcloud.sohu.com)来发送吧。
|
21
octopus_new 2013-07-04 23:30:30 +08:00
奇怪,难道你们都不清楚为什么?
先问问LZ网络是家用网络么?是固定IP么?非商用网络运营商对25端口都做过处理,为了防止spam。如果想要发信,你需要做relay。用Gmail做Relay就可以,sendmail or postfix 做好relay之后就可以发信啦! |
22
flyingnn 2013-07-04 23:57:41 +08:00
|
23
ybf1220 2013-07-05 00:57:26 +08:00
不用smtp协议是不可能的,如果要用本地MTA发的话.ML自带postfix,基本完全兼容sendmail这MTA的,不过收不收的到这是关于邮件过滤规则了,毕竟这是私自架设的,另外简单点直接用网络上的MTA去发,只要有个帐号就行啦,肯定是行的,
|