最近有个项目从虚拟主机迁到云主机上,换了个环境,原来用于找回密码的发送邮件功能竟然用不了了!反应极慢,导致tenginx报504网关超时错误。

5.5 or 7.0, sockets

初次百度,看了别人发的文章,我以为是php版本的问题,原来虚拟主机用的是PHP5.5,现在是7.0。天真的我又下了5.5版本的源码,编译安装了个php5.5,用这个版本的php-fpm替代7.0版本的php-fpm,结果问题依然。

再次问度娘,有人说是sockets扩展的问题,说安装这个扩展。用php -m查看了下,sockets扩展是有的。多试一下总是没错的,抱着这个心理,我试了编译安装两个版本的sockets扩展,还是无济于事。

fsockopen

有的说法是fsockopen的问题,说要改下phpmailer的代码,查看了下phpmailer的代码,已经是OK的。

phpmailer vs swiftmailer, dns

不关php版本和sockets扩展的问题,我把疑点放在phpmailer上,网上传言swiftmailer效率要比phpmailer要好。于是下载了swiftmailer,写了个测试代码,在命令行下跑,结果还是超时。不过这次看到了报错,总算有点眉目了,是 不能跟smtp.mxhichina.com建立连接。莫非是dns解析问题?我用ip替换这个地址后还是一样错误,看来跟dns解析无关。 
发邮件报错的部分内容:

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.mxhichina.com [Connection timed out #110]
  • 1

php vs python

phpmailer,swiftmailer都不行,我怀疑我用的是假的php,连个邮件都发送不了。于是借用了一段发邮件的python代码,测试,报的也是连接超时。看来这个问题跟语言无关,我怀疑是centos系统设置的问题。

window vs centos

我在本机win7下测试,可以正常发邮件。看来还真跟系统有关,离问题解决又近了些。我在windows下用telnet连接smtp.mxhichina.com的25端口,可以正常连上,可在centos下连不上。

25 vs 465

继续百度,有的文章说发邮件也有可能用465端口了,用的是smtps。原来一直用的都是25端口。试了下在centos下用telnet连接465端口,可以正常连接。于是把发邮件的php代码改成用这个端口,也是失败,不过报的是另外一个错误了。好好的一个云主机,竟然发邮件都不行!一怒之下果断向阿里云提交工单。 
第种报错信息:

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Expected response code 220 but got code "", with message ""'
  • 1

stackoverflow, 587

提交工单完毕,心中缓了一下。一个问题折腾了这么久,感觉不想就这样放弃了,于是按这个错误信息百度,竟然在stackoverflow上有人问跟这个一模一样的问题,正好有人解答,不过是在laravel框架下的,大概就是更改配置什么的,通过tls,要把端口设为587。我把代码中的25端口改成587,运行,果然可以发送!!问题就此解决!!

原来阿里云的邮箱服务器的smtps协议用的是587端口,不知为何同样的参数,以前在虚拟主机中用25端口也是正常的。百度了下“smtp.mxhichina.com 端口”,阿里云的帮助文档是这样的: 

465试过不可以,也没提到587,感觉很受伤!!

转自:http://blog.csdn.net/chunyuan314/article/details/62237626

解决CentOS下无法发送邮件的问题的更多相关文章

  1. 我如何解决Centos下cannot find a valid baseurl for repo的问题的

    刚刚安装完centos,进入命令行模式后,发现所有的命令都不能使用,最后一行显示:Error:Cannot find a valid baseurl for repo:base,如何解决? 在cent ...

  2. 一秒解决CentOS下service 功能 不能使用 bash: service: command not found

    首先检查自己是否 使用的是root用户 如果是并且还不能用-----执行以下操作 在centos系统中,如果/sbin目录下没有service这个命令,就会出现 bash: service: comm ...

  3. 解决CentOS下service 功能 不能使用 bash: service: command not found

    首先检查自己是否 使用的是root用户 在centos系统中,如果/sbin目录下没有service这个命令,就会出现 bash: service: command not found 解决步骤如下: ...

  4. 解决“centos 下bash: g++: 未找到命令...”

    简单测试一个C++的“Hello World”,发现报错:“bash: g++: 未找到命令...”,因为没有安装编译器G++:然后就百度,出现一大堆的解决办法,什么“sudo apt-get ins ...

  5. 解决CentOS下man 命令,没有帮助信息

    Cannot open the message catalog "man" for locale "zh_CN.UTF-8" (NLSPATH="/u ...

  6. 解决iredmail下postfix发送邮件时报错[need fully-qualified hostname]

    iredmail配置好后,尝试从一客户端的OE中发送邮件,结果报错,在mail主机中查看tail /var/log/maillog,发现如下错误信息: Oct :: mail2 postfix/smt ...

  7. 解决CentOS下可以ping通ip ping不通域名

    现象:1. ping不通域名,比如 www.qq.com 2. 可以ping通ip,比如 61.135.157.156 分析:1. 查看DNS配置文件 /etc/resolve.conf, 里面的服务 ...

  8. 解决centos下tomcat启动太慢 & JDBC连接oracle太慢的问题

    近期遇到一个非常奇怪的问题,也不知道改了什么,tomcat启动非常慢,以前几秒就启动好了,现在要30秒左右. 而且,通过jdbc连接oracle数据库也非常慢,以前建立一个连接只要几十毫秒,现在也要1 ...

  9. 解决Centos下yum无法更新

    问题: http://mirrors.cloud.aliyuncs.com/epel/6/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - ...

随机推荐

  1. Both - Either - Neither English Grammar

    http://www.grammar.cl/english/both-either-neither.htm Both, Either, Neither Summary Chart We use bot ...

  2. WCF消息传递

    通过了解了WCF的一些基本概念并创建和编写WCF应用中的相应方法,实现了WCF服务和客户端之间的调用,就能够理解WCF应用是如何进行通信的.了解了一些基本的WCF概念后,还需要深入了解WCF消息的概念 ...

  3. 在qemu模拟的aarch32上使用kgtp

    KGTP 介绍 KGTP 是一个能在产品系统上实时分析 Linux 内核和应用程序(包括 Android)问题的全面动态跟踪器. 使用 KGTP 不需要 在 Linux 内核上打 PATCH 或者重新 ...

  4. 在ASP.NET MVC中通过勾选checkbox来更改select的内容

    遇到了这样的一个需求:通过勾选checkbox来更改select的内容. 在没有勾选checkbox之前是这样的: 在勾选checkbox之后是这样的: 想通过ajax异步来实现.所以,从控制器拿到的 ...

  5. 为 JIRA 6.x 安装中文语言包

    20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送) 国内私募机构九鼎控股打造,九鼎投资是在全国股 ...

  6. Android Socket通信详解

    一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客 ...

  7. h.264 x.264

    这是两个不同类型的东西. x264是视频编码器,H.264是视频编码格式. x264编出来的东西就是h.264的.举个例子来说,x264就好比画图或者photoshop,h.264就好比jpg,bmp ...

  8. 神探夏洛克第一季/全集Sherlock1迅雷下载

    第一季 Sherlock Season 1 (2010)看点:夏洛克·福尔摩斯(Sherlock Holmes)是一个虚构的侦探人物,是由19世纪末的英国侦探小说家阿瑟·柯南·道尔所塑造的一个才华横溢 ...

  9. SQLite中的增删改查

    虽然android提供了sql查询的封装方法,但是理解起来还是麻烦,所以我这里用sql语句来完成工作. 首先是建立一个类,继承SQLiteOpenHelper 这里面会建立一个数据库,并且初始化一个表 ...

  10. Java 集合细节(二):asList 的缺陷

    在实际开发过程中我们经常使用 asList 讲数组转换为 List,这个方法使用起来非常方便,但是 asList 方法存在几个缺陷: 一.避免使用基本数据类型数组转换为列表 使用 8 个基本类型数组转 ...