如何解决如何纠正使用codeigniter发送电子邮件的方式
| 嗨,我正在尝试使用codeiginiter邮件类功能发送电子邮件,但是我发现smtp协议存在问题。我使用gmail smtp协议。 我在本地计算机上运行它。 我正在使用Xampp 1.7.4软件包,并且我尝试过如下设置:function index()
{
$config[\'protocol\'] = \'smtp\'; // mail,sendmail,or smtp The mail sending protocol.
$config[\'smtp_host\'] = \'smtp.gmail.com\'; // SMTP Server Address.
$config[\'smtp_user\'] = \'me@gmail.com\'; // SMTP Username.
$config[\'smtp_pass\'] = \'123\'; // SMTP Password.
$config[\'smtp_port\'] = \'25\'; // SMTP Port.
$config[\'smtp_timeout\'] = \'5\'; // SMTP Timeout (in seconds).
$config[\'wordwrap\'] = TRUE; // TRUE or FALSE (boolean) Enable word-wrap.
$config[\'wrapchars\'] = 76; // Character count to wrap at.
$config[\'mailtype\'] = \'html\'; // text or html Type of mail. If you send HTML email you must send it as a complete web page. Make sure you don\'t have any relative links or relative image paths otherwise they will not work.
$config[\'charset\'] = \'utf-8\'; // Character set (utf-8,iso-8859-1,etc.).
$config[\'validate\'] = FALSE; // TRUE or FALSE (boolean) Whether to validate the email address.
$config[\'priority\'] = 3; // 1,2,3,4,5 Email Priority. 1 = highest. 5 = lowest. 3 = normal.
$config[\'crlf\'] = \"\\r\\n\"; // \"\\r\\n\" or \"\\n\" or \"\\r\" Newline character. (Use \"\\r\\n\" to comply with RFC 822).
$config[\'newline\'] = \"\\r\\n\"; // \"\\r\\n\" or \"\\n\" or \"\\r\" Newline character. (Use \"\\r\\n\" to comply with RFC 822).
$config[\'bcc_batch_mode\'] = FALSE; // TRUE or FALSE (boolean) Enable BCC Batch Mode.
$config[\'bcc_batch_size\'] = 200; // Number of emails in each BCC batch.
$this->load->library(\'email\');
$this->email->initialize($config);
$this->email->from(\'me@gmail.com\',\'Me\');
$this->email->reply_to(\'me@gmail.com\',\'Me\');
$this->email->to(\'you@yahoo.com\');
$this->email->subject(\'testing my mail function with CodeIgniter\');
$this->email->message(\'<html><body>this is the content</body></html>\');
if ( ! $this->email->send()){
echo \'error! <br />\';
// Generate error
}
echo $this->email->print_debugger();
}
在我的浏览器中显示以下错误:
error!
220 mx.google.com ESMTP b8sm581192pbj.46
hello: 250-mx.google.com at your service,[118.96.231.25]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
Failed to send AUTH LOGIN command. Error: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
from: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
The following SMTP error was encountered: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
to: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
The following SMTP error was encountered: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
data: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
The following SMTP error was encountered: 530 5.7.0 Must issue a STARTTLS command first. b8sm581192pbj.46
502 5.5.1 Unrecognized command. b8sm581192pbj.46
The following SMTP error was encountered: 502 5.5.1 Unrecognized command. b8sm581192pbj.46
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
User-Agent: CodeIgniter
Date: Wed,1 Jun 2011 09:27:21 +0700
From: \"Me\"
Return-Path:
Reply-To: \"Me\"
To: you@yahoo.com
Subject: =?utf-8?Q?testing_my_mail_function_with_CodeIgniter?=
X-Sender: me@gmail.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <4de5a38938720@gmail.com>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=\"B_ALT_4de5a38938733\"
This is a multi-part message in MIME format.
Your email application may not support this format.
--B_ALT_4de5a38938733
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
this is the content
--B_ALT_4de5a38938733
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<html><body>this is the content</body></html>
--B_ALT_4de5a38938733--
解决方法
出于安全原因,Google的电子邮件服务器需要SSL或TLS才能发送邮件。它没有使用标准的未加密端口25的方法。
您基本上有两个选择。 1)使用sendmail或您自己的服务器上的邮件来传递消息,或2)使用此处介绍的方法使用SSL通过Google的服务器发送电子邮件。祝您好运,希望对您有所帮助。
, 您正在尝试通过标准SMTP端口25上的Gmail发送出站邮件。Gmail不接受该端口(或任何端口)上未加密的连接。您必须在SSL上使用端口“ 2”。
您必须将
$config[\'smtp_port\']
更改为465
,并将$config[\'smtp_host\']
更改为\'ssl://smtp.googlemail.com\'
更多信息在这里
, 您甚至可以使用端口587:
$config[\'smtp_port\'] = \'587\';
和smtp-host为:
$config[\'smtp_host\'] = \'ssl://smtp.gmail.com\';
, 我通过在smtp_host
上包含ssl前缀来解决此问题,方法如下:
$config[\'smtp_host\'] = \'ssl://smtp.gmail.com\';
并确保使用465端口(即Google的smtp端口):
$config[\'smtp_port\'] = \'465\';
否则,默认情况下google会阻止\'低安全性连接\',因此您可以输入自己的google帐户并配置此选项。
允许安全性较低的应用访问帐户
激活此选项,然后重试。希望这可以帮到你!。
, 1)您的smtp端口必须为465
。
2)您的smtp主机必须为ssl://smtp.gmail.com
。
$config[\'smtp_host\'] = \'ssl://smtp.gmail.com\'; // SMTP Server Address.
$config[\'smtp_port\'] = \'465\'; // SMTP Port.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。