【发布时间】:2021-08-06 17:18:57
【问题描述】:
目前我正在使用 phpMailer 在表单提交中向我的 Gmail 帐户发送电子邮件。我用于发送电子邮件的代码类似于以下代码:
###################
/* sendeng email */
###################
use phpMailer\PHPMailer\PHPMailer;
if ($sehat === true) {
require_once "../phpMailer/PHPMailer.php";
require_once "../phpMailer/SMTP.php";
require_once "../phpMailer/Exception.php";
$mail = new PHPMailer();
//smtp settings
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->Username = "myGmail@gmail.com";
$mail->Password = 'myPassword';
$mail->Port = 465;
$mail->SMTPSecure = "ssl";
//email settings
$mail->isHTML(true);
$mail->setFrom($commEmail, $commName);
$mail->addAddress("myGmail@gmail.com");
$mail->Subject = ("$commEmail ($commTopic)");
$mail->Body = "<div style='text-align:right; direction:rtl;'>" . nl2br(strip_tags($commMess)) . "</div>";
// $mail->Body = nl2br(strip_tags($commMess));
// $mail->AltBody = nl2br(strip_tags($commMess));
// $mail->Body = $commMess;
/* for other language messages */
$mail->CharSet = 'UTF-8';
if($mail->send()){
$status = "success";
$response = "Email is sent!";
}
else
{
$status = "failed";
$response = "Something is wrong: <br>" . $mail->ErrorInfo;
}
exit(json_encode(array("status" => $status, "response" => $response)));
}
我在发送电子邮件方面没有任何问题。但我的第一个问题是我在代码中使用$mail->Password = 'myPassword'; 的位置。实际上,我正在本地主机(WAMPSERVER)上编写和调试代码,并且我在代码中使用了我的真实密码而不是 myPassword。但是在完成应用程序后,我将把它托管到一个真实的服务器上(部署我的应用程序)。我的问题是,使用此代码,host provider 可以访问我的 Gmail 密码吗?如果是这样,解决方案是什么?是 phpMailer 中的错误还是我错了?
第二个的问题是,当我想将表单数据发送到我的Gmail帐户时,我必须将我的Gmail的设置更改为“较低的安全性”在此本地主机版本。如果我部署我的应用程序并且它可以在线使用,我必须再次这样做(Gmail 的安全性较低)还是有更好的方法?因为现在当我将 Gmail 安全设置返回到 正常 状态时,phpMailer 不会发送数据。
【问题讨论】:
-
服务器可以做的任何事情,任何控制服务器的人也可以做。如果您的服务器在必要时可以通过 Gmail 发送电子邮件并且它需要密码才能这样做,那么管理服务器的主机提供商也可以根据需要这样做。
-
如果您的网络服务器没有您的凭据,它应该如何使用 Gmail 发送邮件?
-
@Nico Haase 感谢您的评论,我对托管问题不是很熟悉,所以我想也许我可以为这个问题做点什么,但是降低 Gmail 安全设置怎么样?在线版有必要吗?
-
您还应该使用他们的 API 发送电子邮件,而不是将帐户设置为“较低的安全性”。该标志通常会偶尔恢复一次(他们正在推动人们使用他们的 API 而不是通过 SMTP 发送)。使用他们的 API,您可以获得该应用程序的特定凭据,您可以轻松删除这些凭据,而无需修改您的帐户凭据(绝不应与任何人共享或放在任何服务器上)
标签: php security localhost phpmailer web-deployment