2

我使用 Xampp,我想使用 CodeIgniter 发送电子邮件。如果使用 smtp 得到错误:

消息:fsockopen():无法连接到 ssl://smtp.googlemail.com:465(无法找到套接字传输“ssl” - 您在配置 PHP 时是否忘记启用它?)文件名:库/电子邮件。 php

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'gmail@gmail.com',
    'smtp_pass' => 'your_password'
);

$this->load->library('email', $config);
$this->email->set_newline("\r\n");   
$this->email->from('your@example.com', 'Your Name');
$this->email->to('(here I put my mail)@yahoo.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
echo $this->email->print_debugger();

(line extension=php_openssl.dll is decomented)

使用这些设置:

$this->load->library('email');
$this->email->set_newline("\r\n");   
$this->email->from('your@example.com', 'Your Name');
$this->email->to('(here I put my mail)@yahoo.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
echo $this->email->print_debugger();

出现消息:您的消息已使用以下协议成功发送:邮件

来自:“你的名字”返回路径:.......

但我没有收到任何邮件。

问题是什么?

4

2 回答 2

2
  1. 'mail' 协议意味着它使用 PHP 的mail()函数来简单地提交给服务器的邮件代理。“成功”仅仅意味着它被接受了,但并不表明它是否曾经被尝试过交付。邮件代理可能已关闭、配置错误等。您需要检查邮件日志,或者更有可能询问您的托管服务提供商。
  2. 如果您实际上使用的是“发件人”地址,anything@example.com我怀疑邮件是否会真正通过。使用可以自己接收电子邮件的真实电子邮件地址。
  3. 检查您的垃圾邮件文件夹。
于 2013-02-22T18:54:45.293 回答
0

只是投入我的一点点:


在您使用 gmail 的第一个示例中。如果您刚刚取消了行 extension=php_openssl.dll 的注释,则可能必须在测试之前重新启动 apache。特别是如果您使用的是 Windows 系统。这正是我修复我的方式。检查您的 phpinfo() 以确保您的 php 版本具有 ssl 支持。假设您使用的是 xampp,那应该在那里。

我还建议 FROM 电子邮件是 gmail 帐户。可能与 smtp_user 中使用的相同。您始终可以在消息中包含您想要的其他电子邮件信息。如果我打算回复发件人,而不是使用发件人的电子邮件作为发件人,我使用 gmail 帐户。在邮件正文中,我可以包含一个主题与邮件主题相同的 mailto 链接。例如:

<a href="mail:email@stewardxpress.com?subject=From The User's Form" >Reply User</a>

单击要链接的邮件时,我可以使用 Outlook 或 Gmail 轻松回复。它可能有点风,但它可以工作并防止我的邮件最终进入垃圾邮件文件夹


在您的第二个示例中,这在 localhost 中不起作用。所以我猜你正在使用一个网络托管帐户。某些主机会要求您在 from 字段中指定要使用的 smtp 服务器、用户名和密码。最常见的 smtp 是 smtp.example.com。IP 也可以工作,尝试 ping 以获取 smtp IP(请注意,由于某些原因,这可能会改变)。包括这些并试一试。


除了上述之外,检查服务器中配置的包罗万象的电子邮件以查看电子邮件是否到达。尝试发送给自己。检查垃圾邮件和垃圾文件夹。邮件已成功离开您,可能会排队等待稍后的投递。可能需要某种服务器刷新。

于 2013-02-25T07:41:34.653 回答