首页 > 解决方案 > PHP Mailer 不从变量地址发送电子邮件

问题描述

那里进展如何?

我开发了一个 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.

标签: phpmysqlphpmailer

解决方案


尝试首先将值设置为变量,例如

$addcc1 = $r['EmailArquiteto']; $addnom1 = $r['NomeArquiteto'];

然后将邮件设置为该变量:

$mail->addCC($addcc1, $addnom1);

这使得您还可以进行故障排除,例如:

echo "$addcc1 - $addnom1" 以确保它们符合您的预期。


推荐阅读