【发布时间】:2021-08-31 01:09:10
【问题描述】:
那里的情况怎么样?
我开发了一个 php 脚本来向主要用户和其他一些复制用户发送电子邮件。当我测试它时,将电子邮件和姓名直接放入代码中,如下所示:$mail->addAddress('email@provider.com','Any Name'); 我成功收到电子邮件,但是当我从 mysql 数据库中获取它们时:$mail->addAddress($r['userEmail',$r['userFullName']); $mail->addCC($r['userEmail2',$r['userFullName2']);
脚本运行成功,但电子邮件始终未到达。
以前是否有人遇到过类似的情况并可以帮助解决我的问题?
查看我的所有代码:
<?php
include '../dao/conn.php';
require_once('../inc/phpmailer/class.phpmailer.php');
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Host = 'smtp.domainname.com';
$mail->Port = 25;
$mail->SetFrom('no-reply@domainname.com');
$mail->IsHTML(true);
//pesquisa os projetos finalizados ha mais de 90 dias expecificado pelo envio manual
$sql1 = "SELECT p.PDC_NumControle ID
,p.PDC_Nome Projeto
,DATE_FORMAT(g.GRT_DataInicio,'%d/%m/%Y') DataTermino
,datediff(sysdate(), g.GRT_DataInicio) Dias
,l.`Position Name` NomePresidente
,l.`Position Email` EmailPresidente
,u.ManagerName NomeGerente
,u.ManagerEmail EmailGerente
,u.ArchtectName NomeArquiteto
,u.ArchtectEmail EmailArquiteto
FROM tabgarantiaprojeto g
INNER JOIN tabprojetos p ON g.GRT_NumContProjeto = p.PDC_NumControle
INNER JOIN tabpwdusuario u ON u.USU_NumControle = p.PDC_NumContUsuario
WHERE g.GRT_Status = 1 AND g.GRT_NumControle = $idGarantia AND datediff(sysdate(), g.GRT_DataInicio) >= 90;";
$res1 = mysqli_query($conn, $sql1);
$rowCount = mysqli_num_rows($res1);
if($rowCount > 0) {
$r = mysqli_fetch_assoc($res1);
//Lê os dados do projetos e envia e-mail para o presidente
$diasProj = $r["Dias"];
$projID = $r["ID"];
$NomeProjeto = $r["Projeto"];
$dataTermino = $r["DataTermino"];
$mail->AddAddress($r['EmailPresidente'], $r['NomePresidente']);
$mail->addCC($r['EmailArquiteto'], $r['NomeArquiteto']);
$mail->addCC($r['EmailGerente'], $r['NomeGerente']);
$mail->Subject = "Garantia de Obra - $NomeProjeto";
$mail->AltBody = "";
$mail->IsHTML(true);
$conteudo = 'Here is my html content';
$mail->Body = $conteudo;
$resp = $mail->send();
if ($resp) {
$res = 1;
$msg = "E-mail de aviso enviado com sucesso!";
} else {
$res = 0;
$msg = "Não foi possivel processar sua solicitação por causa do seguinte erro: " . $mail->ErrorInfo;
}
$mail->ClearAddresses();
$mail->ClearCCs();
$mail->ClearBCCs();
}
Any help will be appreciated.
【问题讨论】:
-
首先,您使用的是包含已知漏洞的古老版本的 PHPMailer。您需要升级。不要假设您的变量包含您希望它们执行的操作:check。此外,您对
addAddress没有错误检查,因此您永远不会知道它是否失败。