";您的消息已使用以下协议成功发送:mail“,但我一无所获


"Your message has been successfully sent using the following protocol: mail" , but I get nothing

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

消息:fsockopen():无法连接到ssl://smtp.googlemail.com:465(找不到套接字传输"ssl"-您在配置PHP时忘记启用它了吗?)文件名:librarys/Email.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();

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

发件人:"您的姓名"返回路径:。。。。。。。

但我没有收到任何邮件。

问题出在哪里?

  1. "mail"协议意味着它使用的是PHP的mail()函数,该函数只需提交给服务器的邮件代理即可"成功"只是意味着它被接受了,但并不意味着它是否曾被尝试交付。邮件代理可能已关闭、配置错误等。您需要检查邮件日志,或者更可能询问您的托管提供商
  2. 如果你实际使用的是anything@example.com的"发件人"地址,我怀疑邮件是否真的能通过。使用一个可以自己接收电子邮件的真实电子邮件地址
  3. 检查你的垃圾邮件文件夹

只是加入我的一点:


关于你使用gmail的第一个例子。如果您刚刚取消了扩展名为php_opensl.dll的行,那么在测试之前可能必须重新启动apache。尤其是在使用windows系统的情况下。我就是这样解决的。检查phpinfo()以确保您的php版本支持ssl。假设您使用的是examplep,那么它应该存在。

我还建议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(注意,由于某些原因,这可能会更改)。包括这些并尝试一下。


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