用google和codeigniter发送smtp电子邮件时出错
问题描述:
试图为我的网站设置一个重置密码功能,但是我无法通过发送邮件而没有发生此错误。用google和codeigniter发送smtp电子邮件时出错
Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.
我使用gmail作为主机发送电子邮件。这是用于发送电子邮件的功能的一部分。
$ user_email = $ this-> input-> post('email_address');
$query = $this->db->get_where('account', array('email_address' => $user_email));
if($query) {
$config['protocal'] = 'smtp';
$config['mail_path'] = 'ssl://smtp.googlemail.com';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'USEREMAIL';
$config['smtp_pass'] = 'PASSWORD';
$config['charset'] = "utf-8";
$config['mailtype'] = "html";
$config['newline'] = "\r\n";
$this->email->initialize($config);
$this->email->from('[email protected]', 'Matthew');
$this->email->to($user_email);
$this->email->subject('Email Test');
$this->email->message('<h1>Testing the email class.<h1>');
$this->email->send();
if (! $this->email->send()) {
show_error($this->email->print_debugger());
}
else {
echo('DONE');
}
我也收到此错误::
Message: Undefined index: Subject
我不明白为什么会这样,你可以请帮我谢谢你。
答
您正在尝试发送电子邮件两次,第一次所有的选项都设置与第二他们没有
变化
$this->email->send();
if (! $this->email->send()) {
show_error($this->email->print_debugger());
}
到
if (! $this->email->send()) {
show_error($this->email->print_debugger());
}
你如果有任何遗漏,则应该得到相关的错误
编辑:
也改变$config['protocal']
到$config['protocol']
来解决问题发送
答
试试这个
$config = array('auth' => 'login',
'username' => '***@gmail.com',
'password' => '***password',
'port' => '465',
'ssl' => 'ssl');
$request = $this->getRequest();
if ($this->getRequest()->isPost()) {
if ($form->isValid($request->getPost())) {
try {
$smtpHost = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail();
$mail->setBodyText($form->getValue('body'));
$mail->setBodyHtml('');
$mail->setFrom();
$mail->addTo());
$mail->setSubject('');
$mail->send($smtpHost);
} catch (Exception $e) {
die($e);
}
}
}
答
你可以给你使用,以发送电子邮件的功能的其余部分,你发布的所有内容看起来都是正确的... Message: Undefined index: Subject
来自其他地方,可能会导致问题。
另外...这看起来很明显,但你实际上已经加载了电子邮件类的权利($this->load->library('email);
)...而不是只是初始化它?
感谢您的回复解决了这个问题,但是我仍然遇到错误,因为遇到了以下SMTP错误:首先是503 5.5.1 RCPT。 z10sm7618335wfj.12 502 5.5.1无法识别的命令。 z10sm7618335wfj.12 遇到以下SMTP错误:502 5.5.1无法识别的命令。 z10sm7618335wfj.12 无法使用PHP SMTP发送电子邮件。您的服务器可能未配置为使用此方法发送邮件.' – matthew 2011-04-25 10:38:59
您确定端口在465处是否正确? – Dormouse 2011-04-25 10:43:06
尝试更改'$ config ['smtp_port'] ='465''到'$ config ['smtp_port'] = 465' – Dormouse 2011-04-25 10:47:09