localhostからメールを送信するようにXAMPPを構成する方法


255

localhostからメールを送信しようとしています。しかし、ローカルホストからメールを送信できないので、ローカルホストからメールを送信するようにxamppを再構成する方法を誰かに教えてもらえますか


3
私たちはあなたのコードを見ることができますか?
aizaz

2
現在の構成を提供しないと、支援することができません。
arkascha 2013

1
これはまだ含まれているMercury(ApacheFriends XAMPP 1.8.2)に関連していますか?はいと思いますが、水星を好む方がいらっしゃいましたら、以下にご記入ください。:)ありがとう!
アイスウォーター2014年

回答:


371

sendmailパッケージを使用してlocalhostからメールを送信できます。sendmailパッケージはXAMPPに組み込まれています。したがって、XAMPPを使用している場合は、localhostからメールを簡単に送信できます。

たとえば、あなたが設定することができますC:\xampp\php\php.iniし、c:\xampp\sendmail\sendmail.iniGmailのメールを送信します。

localhostのgmailでSSLを機能させるには、その行の先頭からセミコロンをC:\xampp\php\php.ini見つけextension=php_openssl.dllて削除します。

php.iniファイルで検索[mail function]して変更

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = my-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

今すぐ開くC:\xampp\sendmail\sendmail.ini。sendmail.iniの既存のコードをすべて次のコードに置き換えます

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password
force_sender=my-gmail-id@gmail.com

これで完了です!メール機能でphpファイルを作成し、localhostからメールを送信します。

PS:上記のコードでmy-gmail-idmy-gmail-passwordを置き換えるのを忘れないでください。また、上から設定をコピーした場合は、重複するキーを削除することを忘れないでください。たとえば、php.iniファイルに別のsendmail_path:がある場合、次の行のコメントsendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"

また、XAMMPコントロールパネルを使用してサーバーを再起動し、変更を有効にしてください。

Gmailの場合は、https: //support.google.com/accounts/answer/6010255を確認して、安全性の低いアプリからのアクセスを許可してください。

Linuxで(sendmailパッケージを使用して)localhostからGmail経由でメールを送信するには、PHP + Ubuntu Gmailのlocalhostを使用してメールを送信するを確認してください。


3
上記の設定以外に、sendmail glob.com.au/sendmail
kaz

1
XAMMP 1.7.7から2.8.2.3にアップグレードする必要がありました。sendmailは新しいXAMPPに含まれています。数か月前に1.7.7で新しいsendmailを使用してみましたが、動作しませんでした。最後に弾丸をかみ、新しいXAMPPを使用したところ、説明どおりに動作しました。
VanAlbert 2014年

2
C:\ xampp \ php \ php.iniという場所はWindows環境を指していると思います。Macの場合、php.iniファイルのxamppfiles / etcを確認してください。
ポールトロッター2014年

3
答え@Vikasティルマライmurugan答えは実際に私のためにそれを固定述べているとして465を使用して、SMTP_PORTに一定の条件ではないかもしれない仕事をデフォルトのSSLを使用していることを最高の、しかしくださいノートだった
Temitayo

2
XAMPPバージョン7.0.15で完全に動作しています。セミコロンを削除することを忘れないでください。また、設定したのと同じGmail IDにログインし、以下のリンクmyaccount.google.com/lesssecureapps?pli=1にアクセス してください。安全性の低いアプリを許可:オンXAMPP localhostから直接メールを送信できるようになりました
raftaar1191 2017

35

XAMPP v3.2.1では、テストのために、XAMPPがXAMPP / mailoutputで送信するメールを確認できます。Windows 8での私の場合、これは追加の構成を必要とせず、電子メールをテストするための簡単な解決策でした


1
これが機能しない場合は、を確認し、c:\xampp\php\php.iniを探して[mail function]、と記載されている行のコメントを外してくださいmailtodisk.exe。このセクションでは、mail.add_x_header1 行を除いて、他のすべての行をコメント化してください。
Tim Malone

3
上記の私のコメントの補足として、XAMPPの最新バージョンでは、mailtodisk行を手動で追加する必要がある場合があります。:それはこのようになりますsendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
ティム・マローン

@TimMaloneからコメントする追加の補遺。XAMPPを管理者として実行している場合にのみメールがXAMPP / mailoutputに書き込まれることがわかりました
18

@sohail:XAMPPを管理者として実行する必要はありませんが、すべてのユーザーにフォルダーXAMPP / mailoutputへの書き込み権限を与える必要があります(フォルダーを右クリック>セキュリティ>すべてのユーザー>編集権限>フルアクセス)
cheppsn

@TimMalone私は両方の提案を適用しましたが、何度も試みた後でもメール出力ディレクトリには何もありません
Vipul

25

ローカルホストまたはローカルサーバーでメールを送信するのは非常に簡単です

注:XamppがインストールされたWindows 7 64ビットでテストメールサーバーソフトウェアを使用しています

テストメールサーバーツールをダウンロードし、ウェブサイトのテストメールサーバーツールの指示に従ってインストールするだけです。

今、あなたはphp.iniファイルの下の2行だけを変更する必要があります

  1. [mail function]以前のセミコロンを見つけて削除します;smtp = localhost
  2. 前にセミコロンを置く sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

他に何も変更する必要はありませんが、を確認するよりもメールが届かない場合SMTP portは、ポート番号が同じである必要があります。

上記の方法は、Xamppソフトウェアによって提供されるデフォルト設定用です。


7
:あなたがそのサイトを信用していない場合は、代わりにCodePlexのから自分自身を作っを使用する場合がありますpapercut.codeplex.com
Marcel Burkhard、2015年

動作させるために何もする必要はなく、インストールするだけです。
vonUbisch 2015

私はただポートを変更しなければならなかった
Pablo SG Pacheco

この場合のユーザー名とパスワードは何ですか?
Eoin

@Eoinのユーザー名とパスワードは何ですか?
Vikas Khunteta

23

インターネットがなくてもPCでメールの送信をテストできます

このシンプルなアプリケーションであるPapercutを使用して、メールの送信をテストしてください。何も設定する必要はありません。

実行して、メールのテスト送信を試してください。

test_sendmail.php

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";

mail($to,$subject,$txt,$headers);
?>

これが表示されます:

ここに画像の説明を入力してください

良い一日をお過ごしください。Youtubeでもっと多くのチュートリアルPiseth Sokを見つけてください

元気!


1
これは非常に優れたソリューションであり、すばやく簡単に実行できます。ローカルでメールサーバーを詰め込むのは、開発者専用の場合は面倒です。
AdheneManx

1
プロジェクトのテストにもこれを使用してくれてありがとう。
Piseth Sok

19

サーバーでSMTPを構成する必要があります。G Suite SMTP by Googleを無料で使用できます。

<?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 = "your-gmail-account@gmail.com"; // 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 :(";
}

?>

詳細については、PHPMailer こちらをご覧ください


@Vikasの回答が最善でしたが、smtp_portでデフォルトのsslを使用しても、特定の条件では機能しない可能性があることに注意してください。465を使用すると、この回答で実際に修正されました
Temitayo

@Vikasの回答を使用しましたが、emtp_portとして465を使用して、あなたのフラグメントを使用しました。とにかく良い仕事
Temitayo 2014年

致命的なエラー: 82行目のC:\ xampp \ htdocs \ myweb \ email_script.phpにクラス 'PHPMailer'が見つかりません
Shafizadeh

7

私の個人的な経験と同様に、Vikas Dwivediの回答と非常によく似たものがうまく機能することがわかりました。

ステップ1(php.iniファイル)

にあるphp.iniファイルxampp\php\php.ini。設定を次のように変更します。

 extension=php_openssl.dll
 [mail function]
 sendmail_path =":\xampp7\sendmail\sendmail.exe -t"
 mail.add_x_header=On

それらの前にmail funciton置くことにより、他の変数をオフ;にします。例えば;smtp_port=25

ステップ2(sendmail.iniファイル)

xampp \ sendmail \ semdmail.iniにあるsendmail.iniで、次のように変更します。

 smtp_server=smtp.gmail.com
 smtp_port=465
 smtp_ssl=auto
 auth_username=address@gmail.com
 auth_password=YourPassword

ステップ3(コード)

phpファイルを作成し、以下を使用します。

 <?php
    mail($to, "subject", "body", "From: ".$from);
 ?>

通知

  • php.iniをリロードするには、Apacheを再起動する必要があります。
  • https://myaccount.google.com/u/1/securityで Googleの安全性の低いアプリのアクセスを有効にする必要があります
  • 管理者権限でXamppを実行すると役立つ場合があります。

2

このコードは、localhost XAMPPとGmailアカウントからのメールに使用されます。このコードは非常に簡単で、私にとってはあなた自身を試してみてください。

php.iniファイルの以下の変更

SMTP=smtp.gmail.com 
smtp_port=587 
sendmail_from = your@gmail.com 
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 
extension=php_openssl.dll 

sendmail.iniファイルの変更の下

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log 
auth_username=yourmail@gmail.com 
auth_password=your-gmail-password 
force_sender=yourmail@gmail.com  

電子メールを送信するには、PHPファイルにbeloveコードを記述してください

<?php 
    $to = "tomail@gmail.com";
    $subject = "Test Mail";
    $headers = "From: from_mail@gmail.com\r\n";
    $headers .= "Reply-To: replytomail@gmail.com\r\n";
    $headers .= "CC: theassassin.edu@gmail.com\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $message = '<html><body>';
    $message .= '<img src="//css-tricks.com/examples/WebsiteChangeRequestForm/images/wcrf-header.png" alt="Website Change Request" />';
    $message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
    $message .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Email:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Type of Change:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Urgency:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>URL To Change (main):</strong> </td><td>Details</td></tr>";
    $addURLS = 'google.com';
    if (($addURLS) != '') {
        $message .= "<tr><td><strong>URL To Change (additional):</strong> </td><td>" . $addURLS . "</td></tr>";
    }
    $curText = 'dummy text';           
    if (($curText) != '') {
        $message .= "<tr><td><strong>CURRENT Content:</strong> </td><td>" . $curText . "</td></tr>";
    }
    $message .= "<tr><td><strong>NEW Content:</strong> </td><td>New Text</td></tr>";
    $message .= "</table>";
    $message .= "</body></html>";

    if(mail($to,$subject,$message,$headers))
    {
        echo "Mail Send Sucuceed";
    }
    else{
        echo "Mail Send Failed";    
    }
?>

0

このためのSMTPサーバーとポートを定義する必要があります。ライブホストからのメール送信を除いてすべて。

これはこれに関する便利なリンクです

注意:ポートは使用しないでください。のような一部のアプリケーションSkypeはデフォルトのポートを使用しているため、メールを送信できないことに注意してください。



0

この作業を行うために1時間以上費やしました。投稿されたすべての提案が機能しないために同じ問題を抱えているすべての人のために:XAMPPインターフェイスでApacheを再起動する必要があります!XAMPPを再起動するだけでは機能しません!!


0

XAMPP Localhostからメールを送信する方法をいろいろ試しましたが、XAMPPにはSSL証明書がないため、私のメールリクエストはGmailまたは同様のSMTPサービスプロバイダーによってブロックされています。

次に、ローカルのSMTPサーバーにMailHogを使用しました。これを実行するだけです。localhost:1025はsmtpサーバー用、localhost:8025はメールサーバー用で、送信した電子メールを確認できます。

これが私のコードです:

    require_once "src/PHPMailer.php";
    require_once "src/SMTP.php";
    require_once "src/Exception.php";

    $mail = new PHPMailer\PHPMailer\PHPMailer();

      //Server settings
    $mail->SMTPDebug = 3;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'localhost';                    // Set the SMTP server to send through
    $mail->Port       = 1025;                                    // TCP port to connect to
    // $mail->Username   = '';                     // SMTP username
    // $mail->Password   = '';                               // SMTP password
    // $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    // $mail->SMTPSecure = 'tls';         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted

    //Recipients
    $mail->setFrom('testtoo@testto.com', 'Mailer');
    $mail->addAddress('testtoo@webbamail.com', 'Joe User');     // Add a recipient

    // Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }

MailHog Githubリポジトリリンク


0

すべての回答に加えて、sendmail.iniファイルに注意してください:

auth_password = this- is- Not -your-Gmail-password

新しいGoogleのセキュリティ上の懸念があるため、この目的でアプリケーションパスワードを作成するには、次の手順に従ってください。

  1. 行くhttps://accounts.google.com/セキュリティ]タブで
  2. 2段階認証をオンにする
  3. セキュリティタブに戻り、アプリパスワードを作成します(select-appドロップダウンメニューで「その他」を選択できます)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.