我在托管服务器上传源后,电子邮件发送无效,我的代码如下:
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 Apps
,Disabled 2 Step Verification
[FAILED]
5 - 评论/删除$config
变量 [SUCCESS] ,但是电子邮件会发送到SPAMS,并显示以下黄色背景警告
This message may not have been sent by: isecvr@gmail.com
请建议我应该怎么做,我现在尝试发送电子邮件超过10个小时。
答案 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)
问题非常简单
在通过谷歌提交表单时,最好的做法是回调直接smtp服务器,而不是ssl://
它永远不会那样工作。
Gmail使用TLS
通过PORT 587
或465
发送邮件。它永远不会使用465通过SSL发送邮件。
我还发现没有设置身份验证到TLS。
同时确保在“gmail帐户设置”下,“关闭安全性较低的应用程序”处于关闭状态,如果已将其关闭。
我基于技术原因给出的答案。