本文整理中。。

前言

发送一封邮件能够正常的到达用户的收件箱,期间会受哪些因素影响呢?

1 PHP编程,按正常方式发出
2 邮件发送程序(本文是postfix)处理并发出
3 邮件接收服务器确认是否垃圾邮件
4 用户邮件终端解析邮件内容

怎么样的邮件不正常?

1 PHP没有做好编码处理,直接导致乱码问题
2 postfix域配置不正常,导致邮件服务器验证失败,断定为垃圾邮件
3 客户端解析内容的兼容性差

如何进行环境配置

先安装postfix,系统自带的sendmail也可以发送,但明显比postfix用起来麻烦
简单的发邮件,两者都可以
centOS里执行 yum install postfix 即可。

假设我们要配置的发送人的邮箱是 root@notify.aslibra.com
那需要设定两个内容:

1 设定机器名为notify.aslibra.com,@后面那段
hostname notify.aslibra.com

永久设定可以在 /etc/sysconfig/network 修改,否则以上设置重启后会被修改
这个hostname很重要,邮件服务器主要审查的就是此名称是否为合法的发送者
默认是localhost,不改名称很容易就变成垃圾邮件

2 notify.aslibra.com 的TXT记录,包含发邮件的服务器的公网IP,假设是1.2.3.4
添加一条TXT的记录为“v=spf1 ipv4:1.2.3.4 a mx ~all”
此操作是声明哪些ip可以用此域发邮件
更多请参考《postfix基本配置和设定DNS

启动服务测试

启动postfix或者sendmail,然后命令行方式发送一封英文邮件试试
如果能够收到,那说明发送邮件已经正常
下面可以用php来完成更加复杂的邮件,比如html和中文支持

发送实例分析

关于 base64_encode 函数:
引用
本函数将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。在 BASE64 编码后的字符串只包含英文字母大小写、阿拉伯数字、加号与反斜线,共 64 个基本字符,不包含其它特殊的字符,因而才取名 BASE64。编码后的字符串比原来的字符串长度再加 1/3 左右。更多的 BASE64 编码信息可以参考 RFC2045 文件之 6.8 节。


参考阅读内容:

1 HTML EMAIL WITH JPEG ATTACHMENTS TUTORIAL
2 用PHP MAIL()函数发送HTML邮件
3 解決寄件者名稱與信件標題亂碼問題
4 PHP发送UTF-8编码中文邮件标题乱码的解决


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: , , ,
www.tonitech.com的站长 Homepage Email
2013/06/09 01:05
怎么没写完啊?php发送的时候遇到问题了。。。
hqlulu 回复于 2013/06/09 14:03
什么问题呢?
分页: 1/1 第一页 1 最后页
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐