2017-09-07 2 views
0

ここで問題を解決するさまざまな問題の解答がありますが、すべてまとめて入れる必要があります。codeigniters電子メールライブラリでfake Dummy-SMTPを使用する方法

ここで問題となっているのは、codeigniterベースのシステムの電子メール機能をテストするために、Linuxコンピュータに何らかのダミー/偽SMTPサービスをセットアップしようとしていることです。

だから私はここに偽のSMTP Pythonスクリプトが見つかりました:これまでのところは良い

http://www.technoreply.com/finally-a-dummy-smtp-for-linux/

を。

ダミーSMTPサービスを開始するための指示に従い、正常に動作します。別の端末のtelnetポート25でテストできます。

それでは、あなたはCodeIgniterのメールライブラリを実装し、このような何かを:

$config['protocol'] = 'smtp'; 
$config['smtp_host'] = 'localhost'; 
$config['smtp_port'] = 25; 
$config['charset'] = 'iso-8859-1'; 

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

$this->email->from('[email protected]', 'XXXX'); 
$this->email->to('[email protected]); 

$this->email->subject('Test Subject'); 
$this->email->message('body ....'); 
$this->email->send(false); 

そしてトラブルが開始されます:

220 puggle Python SMTP proxy version 0.2 hello: 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.

プロセスもハング、特にどこの時点でシステムがダミーSMTPサービスに接続するソケットから読み取ろうとしています。私たちは、問題1として表しますシステム/ライブラリ/ Email.php

while ($str = fgets($this->_smtp_connect, 512)) 

約ライン2304で

この問題が解決されたら(はい、私は後で答えます - 気をつけてください)、対処する別の問題を見つけることは疑いありません。

電子メールのプロセスは、以下で失敗します。

220 puggle Python SMTP proxy version 0.2 hello: 502 Error: command "EHLO" not implemented The following SMTP error was encountered: 502 Error: command "EHLO" not implemented

ので、残念ながら、ダミーSMTPサービスは、EHLOをサポートしていません!

答えて

0

最初の問題は、この問題のようになります。

Can't send email from gmail in codeigniter, SMTP Authentication error

CodeIgniterのEmail.phpライブラリのデフォルト設定として改行を使用することです:システム/ライブラリでは、約ライン180で

/Email.php

public $newline  = "\n"; 

あなたがここにこれを変更することができます

public $newline  = "\r\n"; 

メールの処理が停止します。あなたは(あなたが定期的にこれらの更新をしようとしている場合は理にかなっている)コアコンポーネントを更新したくない場合は しかし、あなたは、関連する問題の提案に従うと、あなたのコードにこれを追加することができます。

$this->email->set_newline("\r\n"); 

問題2の解決策は、Pythonのライブラリといくつかの汚い仕事を必要とする:

だから、誰かがここにこの問題を持っていた:私は示唆している

Receiving email with SMTPServer in python:

を固定することができますEHLO関数にHELOの機能を複製することによって:

おそらく/usr/lib/python2.7

def smtp_HELO(self, arg): 
    if not arg: 
     self.push('501 Syntax: HELO hostname') 
     return 
    if self.__greeting: 
     self.push('503 Duplicate HELO/EHLO') 
    else: 
     self.__greeting = arg 
     self.push('250 %s' % self.__fqdn) 

#copy the above function and rename it smtp_EHLO 

def smtp_EHLO(self, arg): 
    if not arg: 
     self.push('501 Syntax: HELO hostname') 
     return 
    if self.__greeting: 
     self.push('503 Duplicate HELO/EHLO') 
    else: 
     self.__greeting = arg 
     self.push('250 %s' % self.__fqdn) 

でsmtpd.pyファイルを見つけ、など確かPHP6は、PHP5は、次のように(?)問題は修正されました。

ここで、私はもう一度コアライブラリにパッチを適用したことを指摘します。今回はPythonのものです(そして私はPython開発者でもありません)。間違いなく、いつか私のpythonライブラリを更新し、この修正を失うことになるでしょう。

したがって、Python開発者がコアコードの外側からこの拡張子をsmtpdクラスに適用する方法を教えてくれれば、それはケーキの上に氷結するでしょう!

関連する問題