2016-05-27 12 views
4

codeigniterでPHPMailerを使用するには?

私は phpmailerの



2016-05-31 10:44:55 CLIENT -> SERVER: EHLO localhost 2016-05-31 10:44:56 CLIENT -> SERVER: MAIL FROM: 2016-05-31 10:44:56 SMTP ERROR: MAIL FROM command failed: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp 2016-05-31 10:44:56 The following From address failed: [email protected] : MAIL FROM command failed,Authentication Required. Learn more at https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp ,530,5.5.1SMTP server error: MAIL FROM command failed Detail: Authentication Required. Learn more at https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp SMTP code: 530 Additional SMTP info: 5.5.1 The following From address failed: [email protected] : MAIL FROM command failed,Authentication Required. Learn more at https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp ,530,5.5.1SMTP server error: MAIL FROM command failed Detail: Authentication Required. Learn more at https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp SMTP code: 530 Additional SMTP info: 5.5.1 2016-05-31 10:44:56 CLIENT -> SERVER: QUIT

答えて

6

まず(コントローラまたはライブラリが同じ、唯一のコントローラはCI_Controllerなしライブラリを拡張している)、あなたはことを確認する必要がありますプログラムがランプサーバーにインストールされ、メールがCI3電子メールクラスから送信されます。あなたのローカルホストでは、おそらくこれはインストールされていないでしょうが、ほとんどのWebホスティングサーバーではそうなります。だから私の最初の提案は、リモートWebサーバーからそれを実行し、メールが送信されているかどうかを確認することです。コントローラーからメールを送信する前に、emailライブラリーをロードしてください。このようなもの:

//run this from your controller 
$this->load->library('email'); 
$this->email->from('[email protected]', 'Your Name'); 
$this->email->to('[email protected]'); 
$this->email->cc('[email protected]'); 
$this->email->bcc('[email protected]'); 
$this->email->subject('Email Test'); 
$this->email->message('Testing the email class.'); 
$this->email->send(); 

さらに詳しい制御が必要な場合は、そのための設定オプションも用意されています。メールを送信する前に、次のようにsendmailのパスとその他の変数を設定することができます。

$config['protocol'] = 'sendmail'; 
$config['mailpath'] = '/usr/sbin/sendmail'; 
$config['charset'] = 'iso-8859-1'; 
$config['wordwrap'] = TRUE; 

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

をしかし、あなたはまだPHPMailerを使う、という場合elddenmedioが示唆するように、あなたが行うことができます:Hereあなたが設定されて好みの完全なリストです。しかし、この場合、PHPMailerをlibraryまたはthird_partyフォルダに入れ、そこからコンストラクタにローディングするのが良いでしょう。たびたびrequireを使用します。

編集:

は場合、誰かがここでは、Google検索を介してこれを見つけた私は、最近のCI3プロジェクトで使用していたsmtpを使用してメールを送信するための完全なコードです。これはphpmailerのライブラリを使用せずにメールを送信するためである。

public function send_email($to, $subject, $message) { 
    $config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'mail.gmx.com', 
     'smtp_port' => 587, //465, 
     'smtp_user' => '[email protected]', 
     'smtp_pass' => 'PASSWORD', 
     'smtp_crypto' => 'tls', 
     'smtp_timeout' => '20', 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1' 
    ); 
    $config['newline'] = "\r\n"; 
    $config['crlf'] = "\r\n"; 
    $this->CI->load->library('email', $config); 
    $this->CI->email->from('[email protected]', 'Admin'); 
    $this->CI->email->to($to); 
    $this->CI->email->subject($subject); 
    $this->CI->email->message($message); 

    //$this->email->send(); 
    if (! $this->CI->email->send()) { 
     return false; 
    } 
    return true; 
} 

ちょうどあなた自身の資格情報を使用して[email protected]PASSWORDを交換してください。

+0

PHPMailerが動作していません。あなたはsendmailプログラムについて言及しました。Codeginiterでsendmailをインストールして設定する方法を教えてください。ヘルプは大いにありがとうございます – stackoverflownewbie

+0

@stackoverflownewbie 'sendmail'はCodeIgniterの機能ではなく、Linuxの機能です。あなたのLinuxサーバに 'sendmail'がインストールされていると、CIはそれを自動的に呼び出します。インストールされているかどうかを確認するには、あなたのlinuxコマンドラインに行き、 'sendmail'と打ちます。もしそれがインストールされていなければ、あなたは 'sudo apt-get install sendmail'をubuntuサーバー上で実行できます。 –

+0

sendmailの設定に役立つかもしれないので、[this(http://stackoverflow.com/questions/10359437/sendmail-how-to-configure-sendmail-on-ubuntu)の回答も参照してください。 –

2

あなたに、そして、同様に使用するコントローラOライブラリの必要性を、phpmailerのファイルをダウンロードしたアプリケーション/ライブラリに移動を使用して電子メールを送信しようとすると、私は次のエラーを取得します controller.phpすべての

<?php 
include 'PhpMailer.php'; 

class Test extends CI_Controller{ 
    public function __construct(){ 
     parent::__construct(); 
    } 

    public function do_somthing(){ 
     $this->load->model('model_do'); 

     $data['value'] = $this->model_do->get_values(); 

     $view = $this->load->view('view', $data, TRUE); 

     SendMail("Header", '[email protected]', 'Header 2', '[email protected]', 'Subject', $view); 
    } 
} 
+0

私は正常にCodeigniterとPHPMailerを統合したと思いますが、電子メールを送信しようとするとエラーが表示されます(上記の私の編集した質問を参照してください)。この問題の解決策(私はセキュリティ保護されていないアプリケーションではアクセスを許可し、Gmailの設定では2ステップ認証を無効にしました)。 – stackoverflownewbie

関連する問題