ユーザーに連絡フォームに記入してもらい、それが私のメールに送信されるようにします。しかし、何らかの理由で機能していません。エラーメッセージのない空白のページが表示されるだけで、テキストやメールも送信されません。
if (isset($_POST['submit']))
{
include_once('class.phpmailer.php');
$name = strip_tags($_POST['full_name']);
$email = strip_tags ($_POST['email']);
$msg = strip_tags ($_POST['description']);
$subject = "Contact Form from DigitDevs Website";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = "mail.example.com"; // SMTP server example
//$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 26; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // SMTP account username example
$mail->Password = "password"; // SMTP account password example
$mail->From = $email;
$mail->FromName = $name;
$mail->AddAddress('[email protected]', 'Information');
$mail->AddReplyTo($email, 'Wale');
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $msg;
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->Send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
echo 'Message has been sent';
動作するようになったため、「class.smtp.php」ファイルを含めませんでした。作業コードは次のとおりです。
if (isset($_POST['submit']))
{
include_once('class.phpmailer.php');
require_once('class.smtp.php');
$name = strip_tags($_POST['full_name']);
$email = strip_tags ($_POST['email']);
$msg = strip_tags ($_POST['description']);
$subject = "Contact Form from DigitDevs Website";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = "mail.example.com"; // SMTP server example
//$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 26; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // SMTP account username example
$mail->Password = "password"; // SMTP account password example
$mail->From = $email;
$mail->FromName = $name;
$mail->AddAddress('[email protected]', 'Information');
$mail->AddReplyTo($email, 'Wale');
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $msg;
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->Send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
echo 'Message has been sent';
呼び出す必要があります:
$mail = new PHPMailer(true); // with true in the parenthesis
ドキュメントから:
true
paramは、エラー時に例外をスローすることを意味し、キャッチする必要があります。
SMTPDebugを有効にしてもエラーメッセージが表示されず、同じ問題が発生しました。実例を探し回った後、SMTP Secure値が含まれていないことに気付きました。この行を追加してみてください:
$mail->SMTPSecure = 'ssl'; //secure transfer enabled
今魅力のように動作します。
私のために働いたのは、FromをUsernameに、FromNameを$ _POST ['email']に設定することでした
お役に立てれば
私は、送信するHTMLファイルをロードしようとしていましたが、これはUbuntuサーバーのwww-dataグループに属していませんでした。
chown -R www-data *
chgrp -R www-data *
問題が解決しました!
PHPMailerは例外を使用します。
これを試して
try {
include_once('class.phpmailer.php');
$name = strip_tags($_POST['full_name']);
$email = strip_tags ($_POST['email']);
$msg = strip_tags ($_POST['description']);
$subject = "Contact Form from DigitDevs Website";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = "mail.example.com"; // SMTP server example
//$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 26; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // SMTP account username example
$mail->Password = "password"; // SMTP account password example
$mail->From = $email;
$mail->FromName = $name;
$mail->AddAddress('[email protected]', 'Information');
$mail->AddReplyTo($email, 'Wale');
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $msg;
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->Send();
exit;
} catch (phpmailerException $e) {
echo $e->errorMessage(); //error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage();
}
既存のクラス構造に、独自のハンドラーまたはクローバーPHPMailerを作成するかどうかを議論していました。イベントでは、PHPMailerシステムと既存のクラス構造内で使用されるspl_autoload_register関数の汎用性のため、非常に簡単でした。
次のように、既存のクラス構造に基本クラスのメールを作成しました
<?php
/**
* Provides link to PHPMailer
*
* @author Mike Bruce
*/
class Email {
public $_mailer; // Define additional class variables as required by your application
public function __construct()
{
require_once "PHPMail/PHPMailerAutoload.php" ;
$this->_mailer = new PHPMailer() ;
$this->_mailer->isHTML(true);
return $this;
}
}
?>
呼び出し元のObjectクラスからのコードは次のようになります。
$email = new Email;
$email->_mailer->functionCalls();
// continue with more function calls as required
御Works走を働かせ、車輪の再発明を私を救った。