问题描述
我需要从.env文件中获取客户端凭据。我检查了凭据是否正确。
如果我直接这样输入字符串
$mail->Password = "";
我可以发送到我的电子邮件。
但是一旦我这样做:
$mail->Password = getenv("SMPT_PASSWORD");
或者这个:
$mail->Password = $_ENV["SMTP_PASSWORD"];
我无法发送。
我已使用以下内容进行调试
var_dump($Password);
这就是我得到的:
注意:未定义的变量:第18行的C:\ xampp1 \ htdocs \ PHPMailer \ form.php中的密码 空值 enter image description here
该消息非常清晰,但我不知道如何解决。
如果我对此进行调试:
var_dump($dotenv->load());
我可以看到.env文件的凭据。
我也尝试过更改此内容:
$dotenv = Dotenv\Dotenv::createMutable(__DIR__);
对此:
$dotenv = Dotenv\Dotenv::createUnsafeImmutable(__DIR__);
这是整个代码:
form.php:
<?php include 'contact form.html';
require '/xampp1/htdocs/PHPMailer/PHPMailerAutoload.php';
require_once realpath(__DIR__ . "/vendor/autoload.php");
$dotenv = Dotenv\Dotenv::createMutable(__DIR__);
$dotenv->load();
var_dump($dotenv->load());
$password = $_ENV["SMTP_PASSWORD"];
$PASSWORD = getenv("SMPT_PASSWORD");
var_dump($mail->Password = $PASSWORD);
$msg = '';
if (isset($_POST['submit'])) {
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 25;
$mail->SMTPSecure = 'tls';
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,'verify_depth' => 3,'allow_self_signed' => true,'verify_peer_name' => false,),);
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = $_ENV["SMTP_PASSWORD"];
$mail->setFrom('[email protected]');
$mail->addAddress('[email protected]','Fake Name');
if ($mail->addReplyTo($_POST['email'],$_POST['name'])) {
$mail->Subject = 'PHPMailer contact form';
$mail->isHTML(true);
$mail->Body = '<h3>
Email: ' . $_POST['email'] . '<br><br>' . 'Name: ' . $_POST['name'] . '<br><br>' . 'Message: ' . $_POST['message'] . '<br><br>' . 'Cars: ' . $_POST['cars'] . '<h3>';
if (!$mail->send()) {
$mail->ErrorInfo;
$msg = 'Sorry,something went wrong. Please try again later.';
} else {
$msg = 'Message sent! Thanks for contacting us.';
}
}
}
这是我文件的结构: enter image description here
任何帮助将不胜感激。预先谢谢你。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)