Phpスクリプトを使用して、Webサイトのユーザーにメールを送信する必要があります。 PHPでメール機能を使用してみました。
私のコードは次のとおりです。
$to = "[email protected]";
$subject = "Test mail";
$message = "My message";
$from = "[email protected]";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
プログラムを実行しようとすると、これが得られます:
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set().
$ from変数に含めるアドレスを教えてください。これにはsmtpサーバーが必要ですか?ローカルホストを使用してメールを送信するにはどうすればよいですか? php.iniファイルで編集する内容を正確に教えてください
私はこのすべてに初めてです。助けてください..
代わりにPHPMailerを使用します。 https://github.com/PHPMailer/PHPMailer
どうやって使うのですか:
require('./PHPMailer/class.phpmailer.php');
$mail=new PHPMailer();
$mail->CharSet = 'UTF-8';
$body = 'This is the message';
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = '123!@#';
$mail->SetFrom('[email protected]', $name);
$mail->AddReplyTo('[email protected]','no-reply');
$mail->Subject = 'subject';
$mail->MsgHTML($body);
$mail->AddAddress('[email protected]', 'title1');
$mail->AddAddress('[email protected]', 'title2'); /* ... */
$mail->AddAttachment($fileName);
$mail->send();
電子メールを送信するには、ローカルマシンでsmtpサービスをセットアップする必要があります。グーグルで検索するだけで自由に利用できるものがたくさんあります。
サーバーまたはVPSを所有している場合は、スクリプトをアップロードすると正常に機能します。
このようにphp.iniを設定します
SMTP = smtp.gmail.com
[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
; SMTP = smtp.gmail.com
; smtp_port = 465
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost
これはローカルホストでは機能しませんが、サーバーにアップロードされるため、このコードでうまくいくはずです。必ず$ to行に自分のメールアドレスを入力してください。
<?php
if (isset($_POST['name']) && isset($_POST['email'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$to = '[email protected]';
$subject = "New Message on KristjanMark.com";
$body = '<html>
<body>
<h2>Title</h2>
<br>
<p>Name:<br>'.$name.'</p>
<p>Email:<br>'.$email.'</p>
</body>
</html>';
//headers
$headers = "From: ".$name." <".$email.">\r\n";
$headers = "Reply-To: ".$email."\r\n";
$headers = "MIME-Version: 1.0\r\n";
$headers = "Content-type: text/html; charset=utf-8";
//send
$send = mail($to, $subject, $body, $headers);
if ($send) {
echo '<br>';
echo "Success. Thanks for Your Message.";
} else {
echo 'Error.';
}
}
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="" method="post">
<input type="text" name="name" placeholder="Your Name"><br>
<input type="text" name="email" placeholder="Your Email"><br>
<button type="submit">Subscribe</button>
</form>
</body>
</html>
他の人のメールサーバーを介してメッセージを送信することはできません。ホストプロバイダーにメールの送信方法を確認してください。 PHPを使用せずにサーバーからメールを送信してみてください。Outookなどの任意のメールクライアントを使用できます。動作した直後に、電子メールクライアントのSMTP(電子メールの送信)構成でPHP.iniを構成してください。
これが私に答えを与えるリンクです。Gmailを使用しています。
Install「Windows用の偽のsendmail」をインストールします。 XAMPPを使用していない場合は、ここからダウンロードできます。 http://glob.com.au/sendmail/sendmail.Zip
Modifyphp.iniファイルを使用する(他の行をコメントアウト):
Win32のみ。
SMTP = smtp.gmail.com
smtp_port = 25
For Win32 only.
sendmail_from = <e-mail username>@gmail.com
Unixのみ。
引数も指定できます(デフォルト:sendmail -t -i
)。
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
(実際にはsendmailを使用しているため、「Unix only」ビットは無視してください)
次に、sendmailがインストールされたディレクトリで「sendmail.ini」ファイルを設定する必要があります。
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=<username>
auth_password=<password>
force_sender=<e-mail username>@gmail.com
通常、問題が発生したときに開始するのに適した場所は マニュアル です。 configuring email のページでは、MSWindowsと他のすべてのオペレーティングシステムで実行されるPHP mailコマンドの間に大きな違いがあることを説明しています。質問を投稿する場合は良い考えですシステムのその部分がどのように構成され、どのオペレーティングシステムで実行されているかに関する関連情報を提供します。
PHPは、SMTPサーバーと通信するように設定されています-MSWindowsマシンのデフォルトですが、MTAがインストールされていないか、接続をブロックしています。行うべきことのリストのかなり高い、それは些細な練習ではありません-あなたは本当にあなたが1つを設定して安全に実行するために何をしているのかを知る必要があります。他の人が管理します.
Gmailアドレスを使用してリモートMTAに接続するため、おそらくGmailのサーバーを使用する必要があります。 SMTP認証とおそらくSSLサポートが必要になります。どちらもPHPのmail()関数ではサポートされていません。 swiftmailer with gmail を使用した簡単な例、または phpmailerを使用した例
これを修正するには、PHP.INIと、サーバーにあるメールサービスの設定を確認する必要があります。
しかし、あなたへの私の最善のアドバイスは、mail()
関数を忘れることです。 PHP.INI設定に依存し、その構成はプラットフォーム(LinuxまたはWindows)によって異なり、SMTP認証を処理できません今日では大きな問題です。頭痛が多すぎる。
代わりに「PHP Mailer」を使用してください( https://github.com/PHPMailer/PHPMailer )、これはPHPクラスが無料で利用でき、ほとんどすべてを処理できます内部または外部のSMTPサーバーは、認証の有無にかかわらず、LinuxとWindowsでまったく同じように機能し、PHP.INI設定に依存しません。多くの例が付属しており、非常に強力で使いやすいです。