2016-08-02 191 views
0

电子邮件发送我已经上传我的托管服务器上的源不工作后,我的代码如下:发送电子邮件使用CodeIgnitor从托管服务器

function sendMail($code,$email) 
    { 
     $config = Array(  
      'protocol' => 'smtp', 
      'smtp_host' => 'ssl://smtp.gmail.com', 
      'smtp_port' => 465, 
      'smtp_user' => '[email protected]', 
      '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('[email protected]',"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'[失败]

2 - 改变'smtp_host' => 'smtp.gmail.com''smtp_host' => 'ssl://smtp.gmail.com''smtp_host' => 'ssl://smtp.googlemail.com''smtp_host' => 'smtp.googlemail.com'所有[失败]

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

4 - 在我的谷歌电子邮件我已经允许Less Secure AppsDisabled 2 Step Verification[失败]

5 - 评论/删除$config变量[SUCCESS]但电子邮件被发送到垃圾邮件与下面用黄色背景 This message may not have been sent by: [email protected]

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

+0

没有什么,我的文件在现场托管的服务器上,在xampp代码中工作正常,但现在不是 –

+0

确定只有第一个字母大写,例如'Example。 php'和'class Example使用CI3版本扩展CI_Controller {}'这是必须的。它可能是你的提供者,可能是这个问题? – user4419336

+0

yup @ wolfgang1983这是我的类名看起来像'User extends REST_Controller' –

回答

0

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

0

从本地主机发送电子邮件:

1.如果你从本地主机SMTP发送电子邮件,即评论$配置阵列,您的邮件将始终被重定向到垃圾邮件,除非

你已经配置好服务器邮件服务器(正确安装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,并在您的代码中使用它们。

0

的问题是非常简单的

  1. 虽然在通过谷歌提交表单的最佳实践工作是回调直接SMTP服务器,而不是ssl://它永远不会这样的工作。

  2. Gmail使用TLS发送带有PORT 587465的邮件。它绝不会通过使用465的SSL发送邮件。

我也知道没有设置验证到TLS。

另请确保在Gmail帐户设置下如果将其关闭,则访问不太安全的应用程序将被关闭。

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

相关问题