我正在尝试使用smtp协议发送带有cakephp的邮件。
这是我的email.php:
class EmailConfig {
public $smtp = array(
'transport' => 'Smtp',
'from' => array('account@mail.sk' => 'Me'),
'host' => 'ip_address',
'port' => 1234,
'timeout' => 30,
'username' => 'account',
'password' => 'password',
/* dont know what these parameters below are for */
'client' => null,
'log' => true,
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
);
这是我用于测试的功能(点击链接后应发送一些虚拟邮件):
public function testSendEmail() {
$this->autoRender = false;
$email = new CakeEmail('smtp');
$email->from(array('account@mail.com' => 'Test'));
$email->to('me@gmail.com');
$email->subject('Test subject');
$email->send('Dummy post');
}
我认为我的代码没问题(尽管我没有尝试过,因为gmail在我们的办公室受到限制,因此我无法使用我的gmail设置尝试)。点击链接后($ this-> Html-> link('link',数组('controller'=>'用户','action'=>'send_mail'));)没有任何反应(网站刷新)我没有得到任何错误,甚至没有在tmp / error.log
我猜我的端口不正确。 (但是,任何其他原因,将会发生在你身上,将不胜感激)
经过一番挖掘后,我找到了主机到我需要发送的地方,我的问题是:
如何找到我的邮件服务(Outlook 2007)用于发送邮件的端口?
我尝试了什么:
http://www.authsmtp.com/outlook-2007/alternate-port.html,但图片2以后的所有对话框都与图片不同。
还在命令行中尝试了netstat -a,但与我的OUTLOOK对应的两个端口都没有工作。
附加说明:
更新
将该函数的名称更改为“test_send_email”,现在它不会刷新,但在删除自动渲染并将test_send_email.ctp视图添加到我的MVC后会显示以下错误:
SMTP超时。 错误:发生内部错误。
所以我想我是对的,我没有正确的端口..
答案 0 :(得分:2)
默认端口为25,就是这种情况。
您可以使用cmd命令telnet name_of_server 25
进行检查在Outlook 2007中,可以通过右键单击消息找到服务器地址 - >选项 - >对话框中的向下是此消息的标题。