如何在 BlueHost 空间中用 PHP 以 SMTP 方式发送邮件

如何在 BlueHost 空间中用 PHP 以 SMTP 方式发送邮件,第1张

你可以用 mail,sendmail 和 smtp 三种方式来借助 Mail 类发送邮件。话说几天前刚买了个 BlueHost 的空间,在上面跑程序的时候用 PHP 发邮件搞出点心得来,放在这里跟大家分享。 首先我在系统中添加了一个邮件账户 test,密码 123456,然后写下了如下代码: require_once( 'Mailphp'); $conf = array( 'host' => 'mailyourdomailcom', 'auth' => true, 'username' => 'test', 'password' => '123456' ); $headers['From'] = 'noreply@yourdomaincom'; $headers['To'] = $To; $headers['Subject'] = '=GB2312B' base64_encode( $Subject) '='; $headers['Content-Type'] = 'text/plain; charset=gb2312'; $Mail = & Mail::factory( 'smtp', $conf); $res = $Mail->send( $To, $headers, $Content); > $To 是想要发送到的信箱地址,比如 foobar@gmailcom,$Subject 是邮件主题,$Content 是 GB2312 编码的邮件正文。结果用以上程序屡试屡败,后来经过多次试验才得出在 BlueHost 主机上用 PHP 以 SMTP 方式发送邮件的正确方法,注意事项如下:1) BlueHost 帮助信息中说跟你账户(域名)相对应的 SMTP 主机地址是 mailyourdomaincom,但其实应该是 localhost。你用 mailyourdomaincom 只会得到 SMTP 拒绝链接的错误信息。2) SMTP 服务器需要验证才能发邮件。3) SMTP 验证时用户名需要写 user+yourdomaincom,不能写 user@yourdomaincom。想想这个也好理解,在虚拟主机上一个 SMTP server 要支撑很多个账户,这种写法应该是为了区别发件的账户。4) 邮件头中的发件邮件账户一定要是存在于系统中的真实账户,象我上面那样注册了一个 test@yourdomaincom,但是发件人账户又写 noreply@yourdomaincom 是不行的,只会得到这样的错误信息:SMTP: Invalid response code received from server (code: 550, response: Verification failed for No Such User Here Sender verify failed) 知道了上面这 4 个注意事项以后就好办了,删掉刚才注册的 test 邮件帐号,注册一个 noreply 帐号,修改程序如下: require_once( 'Mailphp'); $conf = array( 'host' => 'localhost', 'auth' => true, 'username' => 'noreply+yourdomaincom', 'password' => '123456' ); $headers['From'] = 'noreply@yourdomaincom'; $headers['To'] = $To; $headers['Subject'] = '=GB2312B' base64_encode( $Subject) '='; $headers['Content-Type'] = 'text/plain; charset=gb2312'; $Mail = & Mail::factory( 'smtp', $conf); $res = $Mail->send( $To, $headers, $Content); > 邮件被成功的发送出去了,而且由于邮件服务器在美国,发送到 GMail 信箱非常之快,一般这边一发那边刷新一下就能看到新邮件:) 这里再说些题外话,买了 BlueHost 的空间将近一周时间了,感觉美国的虚拟主机市场确实非常成熟,功能强大。跟国内价格还行但是配置超受限的主机比起来性价比高的不得了!只要你选对了服务提供商,可以说绝对让你满意。但是缺点也比较明显,就是速度实在是慢!这里面的原因众所周知,感谢伟大的电信运营商,感谢伟大的 GFW! 今天跟 HostMonster 的客户沟通了一下,问问他们那边从中国过去的访问速度怎么样,估计人家遇到这样的情况不是个别现象,上来就是一句,我们对来自中国的访问速度无法做出承诺。 国内的虚拟主机服务商有万网这样把大家当 SB 漫天要价的主,但是也有兢兢业业踏踏实实做服务的公司,不过性价比跟国外的运营商确实没法比。一边是价格高不了多少,动辄几十 G 空间几百 G 月流量,支持 SSH,支持多 Addon domain 的国外主机,一边是价廉物不太美的国内主机,我想诱惑力是不言而喻的。但是速度,唉,伤心是一种说不出的痛!

在Windows平台下使用mail函数发送邮件,记录如下
phpini的设置:
SMTP = localhost
smtp_port = 25
sendmail_from=你的设定值
另外,还需要安装IIS自带的SMTP,在SMTP虚拟服务器上点击右键,在d出的属性窗口里进行如下设置:
点击访问选项卡,再点击中继,在d出的窗口出点击添加,然后选单台计算机,添加IP地址为 127001。然后一路确定返回。(不进行此项设置,可能会出现:SMTP server response: 550 571 Unable to relay for jxxycc@qqcom。。。的错误)
这样就可以使用mail函数了
<php
mail("jxxycc@qqcom","Test mail function of PHP","hello world!");
>

首先,我们需要去Github(网页链接)下载完整的SwiftMailer

这里主要使用到的是下载解压后lib文件夹里的内容,然后需要一些配置项,为方便管理和修改,此处我们写一个配置文件configphp,来进行配置,此处以QQ邮箱为例,配置项如下:

然后自定义一个函数sendMail(函数里的C是thinkphp里获取配置文件的方法,自己在不是tp里的话使用直接require就可以了)

然后在相关代码里使用调用sendMail发送邮件,这里以ThinkPHP里的controller为例子,使用方法如下:

发送成功后显示 ‘Done!’:

然后就可以去邮箱查看是否收取到邮件咯。

就是这么简单。

参考:网页链接


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13325034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-15
下一篇 2023-07-15

发表评论

登录后才能评论

评论列表(0条)

保存