我正在使用SMTP在我的CAKEPHP项目中发送电子邮件。 我的电子邮件配置如下
class EmailConfig {
public $Smtp = array(
'transport' => 'Smtp',
'from' => array('contact@mydomainname.com' => 'domainname.com'),
'host' => 'myhostingserver',
'port' => 2525,
'timeout' => 60,
'username' => 'username@mydomainname.com',
'password' => 'secret',
'client' => null,
'log' => false
);
和我的邮件功能代码如下
$email = new CakeEmail('Smtp');
$result = $email->template('welcome_mail','default')
->emailFormat('html')
->to($to_email)
->from('contact@mydomainname.com')
->subject('Welcome to my domain name')
->viewVars($contents);
if($email ->send('Smtp'))
{
echo ('success');
}
当我发送邮件时,它抛出以下错误 SMTP超时。我的SMTP服务器详细信息是正确的,它在现有服务器中正常工作。我不知道我哪里错了
答案 0 :(得分:7)
检查加密类型(如果适用),例如ssl或tls
在这种情况下,您的主机网址应该如下所示
'host' => 'ssl://myhostingserver'
或
'host' => 'tls://myhostingserver'
答案 1 :(得分:1)
如果您的SMTP服务器具有SSL,则必须在php_openssl
中启用php.ini
才能使用此服务。
您可以使用此代码进行测试
if(!in_array('openssl',get_loaded_extensions())){
die('you have to enable php_openssl in php.ini to use this service');
}
答案 2 :(得分:0)
除了这里已经存在的东西,必须加载模块。我发现有些服务器阻塞了一些端口。我用这个脚本来测试一些服务器:
<?php
if(!in_array('openssl',get_loaded_extensions())){
die('you have to enable php_openssl in php.ini to use this service');
} else {
echo "php_openssl in php.ini is enabled <br />";
}
// fill out here the smpt server that you want to use
$host = 'ssl://smtp.gmail.com';
// add here the port that you use for for the smpt server
$ports = array(80, 465);
foreach ($ports as $port)
{
$connection = @fsockopen($host, $port);
if (is_resource($connection))
{
echo $host . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.<br />' . "\n";
fclose($connection);
} else {
echo $host . ':' . $port . ' is not responding.<br />' . "\n";
}
}
?>