从托管服务器使用CodeIgniter发送电子邮件

时间:2016-08-02 08:53:40

标签: php codeigniter email ssl smtp

我在托管服务器上传源后,电子邮件发送无效,我的代码如下:

function sendMail($code,$email)
    {
        $config = Array(        
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.gmail.com',
            'smtp_port' => 465,
            'smtp_user' => 'something@gmail.com',
            'smtp_pass' => 'something',
            'smtp_timeout' => '4',
            'mailtype'  => 'text', 
            'charset'   => 'utf-8'//'iso-8859-1'
        );

        $message = 'Your Verification code is :'.$code;
        $this->load->library('email',$config);
        $this->email->set_newline("\r\n");
        $this->email->from('isecvr@gmail.com',"iSec Community"); // change it to yours
        $this->email->to($email);// change it to yours
        $this->email->subject('Activate your account');
        $this->email->message($message);
        if($this->email->send())
        {
            return true;
        }
        else
        {
         show_error($this->email->print_debugger());
            return false;
        }

    }

我试图让这项工作,有些工作,但他们被发送到垃圾邮件而不是收件箱,有些根本不起作用:

1 - 更改'protocol' => 'sendmail' [FAILED]

2 - 更改'smtp_host' => 'smtp.gmail.com''smtp_host' => 'ssl://smtp.gmail.com''smtp_host' => 'ssl://smtp.googlemail.com''smtp_host' => 'smtp.googlemail.com'所有 [FAILED]

3 - 更改'smtp_port' => 587'smtp_port' => 25 [失败]

4 - 在我的google电子邮件中,我允许Less Secure AppsDisabled 2 Step Verification [FAILED]

5 - 评论/删除$config变量 [SUCCESS] ,但是电子邮件会发送到SPAMS,并显示以下黄色背景警告 This message may not have been sent by: isecvr@gmail.com

请建议我应该怎么做,我现在尝试发送电子邮件超过10个小时。

3 个答案:

答案 0 :(得分:0)

可能是你的服务器不允许与gmail服务器通信?这可能是其中一种可能性。如果不是这种情况,那么“show_error($ this-> email-> print_debugger());”的输出是什么?你必须从这一行获得一些输出。

答案 1 :(得分:0)

从Localhost发送电子邮件:

1.如果您将从localhost SMTP发送电子邮件,即评论$ config数组,您的邮件将始终被重定向到垃圾邮件,除非

您已将服务器配置为邮件服务器(正确安装了Postfix / Sendmail,并在您的域的DNS区域中配置了MX,SPF和DKIM记录)。

<强> 2。如果您使用Gmail SMTP作为中继来发送电子邮件:

请参阅:Sending email with gmail smtp with codeigniter email library

确保防火墙配置中的端口465或587处于打开状态。

注意:我个人认为,这不是一个好习惯,而且总是有一定的局限性。例如:发件人地址始终是用作用户名SMTP配置的地址。

我建议安装并尝试免费的第三方SMTP服务,如SparkPost,Sendgrid和mandrill,并在您的代码中使用它们。

答案 2 :(得分:0)

问题非常简单

  1. 在通过谷歌提交表单时,最好的做法是回调直接smtp服务器,而不是ssl://它永远不会那样工作。

  2. Gmail使用TLS通过PORT 587465发送邮件。它永远不会使用465通过SSL发送邮件。

  3. 我还发现没有设置身份验证到TLS。

    同时确保在“gmail帐户设置”下,“关闭安全性较低的应用程序”处于关闭状态,如果已将其关闭。

    我基于技术原因给出的答案。