web-dev-qa-db-ja.com

SMTPサーバーをインストールせずにPHPからメールを送信する方法は?

専用サーバー上に古典的なLAMPプラットフォーム(Debian、Apache2、PHP5、MySQL)があります。

PHPMailerはSMTPをインストールしなくてもメールを送信できると聞きました。 PHPMailerはこれに最適ですか?

22
dynamic

はい、PHPMailerは非常に良い選択です。

たとえば、必要に応じて、Googleの無料SMTPサーバーを使用できます(Gmailアカウントから送信するようなものです)。または、smtp部分をスキップして、通常のmail()呼び出しとして送信できますが、ヘッダーなど。マルチパートの電子メール、添付ファイルを提供します。

セットアップも非常に簡単です。

<?php

$mail = new PHPMailer(true);

//Send mail using gmail
if($send_using_gmail){
    $mail->IsSMTP(); // telling the class to use SMTP
    $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; // set the SMTP port for the GMAIL server
    $mail->Username = "[email protected]"; // GMAIL username
    $mail->Password = "your-gmail-password"; // GMAIL password
}

//Typical mail data
$mail->AddAddress($email, $name);
$mail->SetFrom($email_from, $name_from);
$mail->Subject = "My Subject";
$mail->Body = "Mail contents";

try{
    $mail->Send();
    echo "Success!";
} catch(Exception $e){
    //Something went bad
    echo "Fail - " . $mail->ErrorInfo;
}

?>
21

SMTPを使用しない場合、PHPメール機能: http://php.net/manual/en/function.mail.php を使用できます。

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
3
Justin Jones

Phpmailerを使用して、デフォルトのphp mail()関数を使用して送信することもできます。

Mail()関数を使用して手動で処理するのではなく、代わりにphpmailerを使用し、mail()を使用するように構成することをお勧めします。

自分でメールを送信するためにSMTP接続を使用していない場合でも、mail()関数はSMTP接続またはサーバーのsendmailプログラムを使用してメールを送信することを指摘しておきます。正しく動作するように設定する必要があります。

1
arnorhs