Codeigniter:SMTP 邮件不起作用

2022-01-17 00:00:00 email smtp php codeigniter

我正在尝试设置一个联系表单,但我正在努力让它与 CI 中的 SMTP 配置一起使用.不过,我已经成功尝试了基本的邮件"配置.

I'm trying to set up a contact form, and I'm struggling to get it working with the SMTP configuration in CI. However I've successfully tried with the basic 'mail' config.

简而言之,我正在使用以下简单代码进行测试:

To cut it short, I'm doing my tests with this simple code:

    $config = array(
        'protocol' => 'smtp',
        'smtp_host' => 'smtp.1and1.es',
        'smtp_port' => 25,
        'smtp_user' => 'user@mysite.com', 
        'smtp_pass' => '********',
        'mailtype'  => 'text',
        'charset'   => 'utf-8',
        'wordwrap'  => true,
        'wrapchars' => 50            
    );

    $this->load->library('email');
    $this->email->initialize($config);

    $this->email->from('my_real_email_address@gmail.com');
    $this->email->to('my_real_email_address@gmail.com');
    $this->email->reply_to('my_real_email_address@gmail.com', 'John Doe');
    $this->email->subject('Message sent from the contact form in website');
    $this->email->message('Body of message...');

    if ($this->email->send()) {
            return true;
    }
    echo '<!--' . print_r($this->email->print_debugger(), true) . '-->'; 
    return false;

我刚刚询问了我的托管服务提供商,所有 SMTP 配置都是正确的.他们还检查了我的电子邮件帐户是否正常工作.

I've just asked my hosting provider and all the SMTP config is correct. They've also checked my e-mail account is working properly.

事实上,如果我选择:

protocol => '邮件'

消息传递没有问题.AFAIK php mail() 函数也使用托管服务提供商 SMTP,但它只是将它交给服务器并忘记它.

the message is delivered without problems. AFAIK the php mail() function also uses the hosting provider SMTP but it simply hands it over to the server and forgets it.

相反,我想使用 SMTP 身份验证,它担心电子邮件的发送.但只能通过改变

Instead I'd like to use SMTP authentication, which worries about the dispatch of the e-mail. But only by changing

协议 => 'smtp'

当我发送表单时,处理时间很长,我终于收到了这条调试消息:

when I send the form there's a lot of processing time and I finally get this debugging message:

220 smtp.1and1.es (mreu2) Welcome to Nemesis ESMTP server

hello:  The following SMTP error was encountered:
Failed to send AUTH LOGIN command. Error: 421 smtp.1and1.es connection timed out

from:  The following SMTP error was encountered:
to:  The following SMTP error was encountered: 
data:  The following SMTP error was encountered:  

The following SMTP error was encountered: 
Unable to send email using PHP SMTP.  Your server might not be configured to send mail using this method.
User-Agent: CodeIgniter
Date: Thu, 24 Jan 2013 18:51:31 +0100
From: <my_real_email_address@gmail.com>
Return-Path: <my_real_email_address@gmail.com>
To: my_real_email_address@gmail.com
Reply-To: "John Doe" <my_real_email_address@gmail.com>
Subject: =?utf-8?Q?Message_sent_from_the_contact_form_in_website?=
X-Sender: my_real_email_address@gmail.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <510174a33158d@gmail.com>
Mime-Version: 1.0


Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Body of message...

这个错误的原因可能是什么?

What might be the reason of this error?

推荐答案

有人报告说配置项有单引号问题:

Some have reported having an issue with a config item having single quotes:

$config['crlf'] = '
';      //should be "
"
$config['newline'] = '
';   //should be "
"

我很确定 protocol =>mail 不使用您的提供商——它将直接从您的服务器发送电子邮件.

I'm pretty certain protocol => mail does not use your provider -- it will send the email directly from your server.

如果不是单引号问题,则可能是凭据、防火墙或连接要求不正确(例如,您的电子邮件提供商是否需要 TLS/SSL).

If it's not the single quote issue, it might be an issue with incorrect credentials, firewall or connection requirement (say if your email provider requires TLS/SSL).

尝试连接到邮件服务器并与另一个客户端发送电子邮件(您可以使用 telnet:http://www.wikihow.com/Send-Email-Using-Telnet 或 Thunderbird 等)来验证协议是否正确.

Try connecting to the mail server and send an email with another client (you could use telnet: http://www.wikihow.com/Send-Email-Using-Telnet or thunderbird or somesuch) to verify the protocols are correct.

相关文章