我正在尝试测试一些 Web 代码并在本地主机上运行它。如何为本地主机设置电子邮件,以便代码可以使用 php 消息函数发送电子邮件?
如果我需要在某处获取一些网络托管空间并使用该邮件服务器从本地主机发送电子邮件,我该如何设置?
答案1
Mac OS X 10.5 和 10.6 附带一个名为 的邮件发送程序postfix
,但默认情况下不启用。这可能适用于 10.7,但我还没有研究过。
如果您只想将所有外发邮件发送到某个中继服务器(如 Internet 服务提供商的 SMTP 服务器),则通常需要为发送邮件的计算机指定一个主机名。此配置适用于未用于接收邮件的服务器。
打开终端并输入以下命令,每行一个。输入第一个命令后,系统将提示您输入密码。(哦,您需要以具有管理权限的用户身份登录。)
首先,您需要设置postfix
在计算机尝试发送邮件时运行:
% sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist
% sudo defaults write /System/Library/LaunchDaemons/org.postfix.master OnDemand -bool true
% sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
接下来,您要知道postfix
计算机的主机名是什么:
% sudo postconf -e myhostname=<host-name-of-computer>
接下来,告诉postfix
使用哪个 SMTP 服务器发送电子邮件:
% sudo postconf -e relayhost=<your-isp's-smtp-server>
这对我来说很有效,因为我的 ISP 不需要身份验证即可使用他们的 SMTP 服务器。他们只要求流量来自他们的网络。
如果您使用的 SMTP 服务器需要身份验证,则需要执行一些额外步骤:
% sudo echo <you-isp's-smtp-server> <username>:<password> >> /etc/postfix/sasl_passwd
% sudo postconf -e smtp_sasl_auth_enable=yes
% sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
此时,如果postfix
尝试将电子邮件发送到someone@<host-name-of-computer>
,则电子邮件将在本地投递。如果您发送到此主机名的电子邮件由其他服务器处理,请告知postfix
这不是发送到该主机名的电子邮件的最终目的地:
% sudo postconf -e mydestination=localhost
我专门针对我的环境使用了以下内容:
% sudo postconf -e myhostname=subtlecoolness.com
% sudo postconf -e relayhost=smtp-server.austin.rr.com
好了!您现在应该可以运行了postfix
,并且您的 Web 服务器将发送电子邮件!
(我写了一篇关于此的博客文章很久以前。)