2

ユーザーがさまざまなメールIDにメッセージを送信できるフォームがあります。フォームには、from、to、subjectなどのフィールドがあります。ユーザーは、「from」フィールドにメールIDを入力し、「to」フィールドに受信者のメールIDを入力します。問題は、コードは問題ないと思いますが、メールを送信できないことです。CodeIgniterはこの方法でメールを送信できますか?

コントローラ

class Email_send extends CI_Controller {   

    function Email_send()
    {
        parent::__construct();
        $this->load->library('email');
        $this->load->helper('url');
        $this->load->helper('form');
    }

    function index()
    { 
        $config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => 465,
            'subject'  => $this->input->post('subject'),
            'message'  => $this->input->post('message'),
            'from'    => $this->input->post('from'),
            'to'  => $this->input->post('to'),
        );

        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");

        $this->email->initialize($config);

        $this->email->from($config['subject']);
        $this->email->to($config['to']); 

        $this->email->subject($config['from']);
        $this->email->message($config['message']);  

        if($this->email->send())
        {
            $this->load->view('success_em');
        }

        else
        {
            show_error($this->email->print_debugger());
        }
    }
}

意見

        echo form_open('Email_send', $attributes); ?>

<p>
        <label for="from">Your mail ID <span class="required">*</span></label>
        <?php echo form_error('from'); ?>
        <br /><input id="name" type="text" name="from"value="<?php echo set_value('from'); ?>"  />
</p>

<p>
        <label for="to">To <span class="required">*</span></label>
        <?php echo form_error('to'); ?>
        <br /><input id="to" type="text" name="to" value="<?php echo set_value('to'); ?>"  />
</p>

<p>
        <label for="subject">Subject of the mail<span class="required">*</span></label>
        <?php echo form_error('subject'); ?>
        <br /><input id="subject" type="text" name="subject"  value="<?php echo set_value('subject'); ?>"  />
</p>


<p>
        <label for="message">Your Message<span class="required">*</span></label>
        <?php echo form_error('message'); ?>
        <br /><textarea id="message" style="width:300px; height:80px" type="text" name="message"  value="<?php echo set_value('message'); ?>"  /></textarea>

エラー

The following SMTP error was encountered: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 ko8sm6157345pbc.40
502 5.5.1 Unrecognized command. ko8sm6157345pbc.40
The following SMTP error was encountered: 502 5.5.1 Unrecognized command. ko8sm6157345pbc.40
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.

User-Agent: CodeIgniter
Date: Thu, 23 Aug 2012 14:54:54 +0000
From: 
Return-Path: 
To: xxxxx@gmail.com
Subject: =?utf-8?Q?xxxxx@hotmail.com?=
Reply-To: "hello" 
X-Sender: hello
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <5036443e415e4>
Mime-Version: 1.0


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

hello
4

3 に答える 3

1

You need to authenticate first. You miss these two parameters:

$config['smtp_user'] = "user@gmail.com";
$config['smtp_pass'] = 'yourpassword';
于 2012-08-23T14:51:56.510 に答える
1

電子メールクラスを初期化するために渡すオブジェクトに、、、subjectmessage追加fromする必要はないと思います。toconfig

これらを削除して、Hatemが提案したようにSMTP認証キーを含めてみてください。

例えば

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'user@gmail.com';
    'smtp_pass' => 'yourpassword';  
);
于 2012-08-23T15:05:40.100 に答える
0

最初に認証する必要があります。次の2つのパラメータを見逃しています。

$config['smtp_user'] = "user@gmail.com";
$config['smtp_pass'] = 'yourpassword';

他の構成の横にそれらを追加します。

于 2012-08-23T15:05:11.070 に答える