web-dev-qa-db-ja.com

LinuxでPHP)を使用してローカルホストからメールを送信する方法

Windowsでローカルホストから電子メールを送信するには、php.iniでSMTPサーバーを変更する必要があることを知っていますが、これはWindowsでのみ有効です。

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

では、Linux OSから電子メールを送信できるようにするにはどうすればよいですか?

11
Templar

Postfixのような完全なメールサーバーをインストールするのではなく、 ssmtp をインストールすることをお勧めします。これが単なるローカルテスト環境である場合は、完全なMTAはおそらく必要ありません。 ssmtpのセットアップは非常に簡単です。リモートサーバーのSMTP認証情報を指定するだけです。チュートリアルがあります ここ

5
Jacob Dalton

これは、ローカルホストから電子メールを送信するためのLinux Mint17で機能しました。

Sudo apt-get install sendmail
3
Fred Christophe

Debianとその変種(* buntuなど)を実行している場合は、_Sudo tasksel install mail-server_を実行してメールサーバーをインストールできます。これにより、基本的な電子メール機能が設定されます。これは、コマンドライン_echo 'body' | sendmail [email protected]_で実行するか、他の人が言及しているように、PHPでmail($to, $subj, $msg)を実行することでテストできます。

3
mzhang

ローカルホスト(WAMP、XAMP、またはLAMP)からメールを送信するには、PHPMailerパッケージを使用できます(PHPMailerを ここ からダウンロード)。

まず、「php.ini」を編集する必要があります。このファイルを見つけるには、WAMPサーバーから次のコードを使用してphpinfoを表示します。 1つのphpファイルを作成し、このコンテンツを追加します。

<?php
     echo phpinfo();
?>

「ロードされた構成ファイル」を検索します。これがphp.iniへのパスになります。

このファイルで、extension = php_openssl.dllに指定されている;(セミコロン)を削除します。

PHPMailerX.X.Xパッケージをダウンロードした後

抽出->フォルダ全体をプロジェクトフォルダにコピーします。

テストフォルダには、testemail.phpというファイルが1つあります。

必要に応じてパラメータを変更してください。 (以下に示す例)。

次に、ブラウザで127.0.0.1/PHPMailer/test /testemail.phpと入力します。

次に、電子メールが送信された場合は成功したメッセージが表示され、そうでない場合はエラーメッセージが表示されます。例:

//add these codes if not written

$mail->IsSMTP();
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465; 

//You have to change these parameters to your requirements.
//…….code….

$mail->Username = “[email protected]”; // GMAIL username
$mail->Password = “abcdefgh”; // GMAIL password
//……..code….. There are many other functions to attach file etc.. For that refer doc file.
$mail->AddAddress(“[email protected]”,”Nick name”);
//…….code…..
2
Shashidhara

Php.iniファイルには、次のようなスタブがすでに存在しているはずです。

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail -t -i

指定されたコマンドがファイルシステムに存在し、MTAが正しく(インストールおよび)構成されていることを確認してください。

MTAをまだ設定していない場合は、Linuxシステムで利用できる 多くのMTA があります。sendmail(構成が複雑/難しいが、優れたパフォーマンスと驚くべき柔軟性)またはpostfix(驚くべき柔軟性)をお勧めします。設定が簡単で、すぐに使用できる優れたセキュリティ)。

'mail' cliクライアントを使用する方法、またはサーバー上で別のMUAを実行して、MTAの構成をPHP統合から分離する方法を学びます。

1
symcbean

Sendmailまたはeximを設定します。パッケージマネージャーでいずれかのオプションを検索してインストールします。 Senmailは一般的であり、それを設定することでうまくいくはずです。 LinuxのmailコマンドはMUAまたはメールユーザーエージェントであり、メールユーザーエージェント(MUA)は、電子メールの送受信に使用されるアプリケーションであり、より多くのクライアントです。一方、メール転送エージェントは、クライアントサーバーアプリケーションアーキテクチャを使用して、あるコンピューターから別のコンピューターに電子メールを転送します。

1
Kumar

SendmailなどのMTAをインストールする必要があります(Debianのような一部のディストリビューションはeximまたはおそらくpostfixを好むようです)。

PHPのSMTP実装を使用することは、RFC5321「4.5.4.1。送信戦略:すぐに送信できないメールはキューに入れられ、送信者によって定期的に再試行されなければならない」の再試行要件を尊重しないため、悪い考えです。

このRFCの「MUST」要件への違反は、一般に堅牢性を低下させ、ほとんどの場合、正しい相互運用を妨げます。これが、ローカルMTA(LinuxまたはWindowsの場合)を使用する必要がある理由です。理想的には、MTAにメッセージを送信するための非SMTPメカニズムが必要です。そのため、PHPはメールを送信するために「sendmail」を実行する必要があります。MTAがデフォルトの場合、これを実行する傾向があります。インストールされています。

1
MarkR