PHPMailer在异常情况下另存为.eml

PHPMailer在异常情况下另存为.eml,php,exception-handling,phpmailer,Php,Exception Handling,Phpmailer,我做了一个发送电子邮件的代码,但是SMTP连接的参数需要用户设置,所以我在代码中测试检查异常 我怀疑是否有办法创建消息并将其保存在.EML格式,然后使用PHPMailer重试 try { if (!$mail->send()) { $this->setErrorDescription($mail->ErrorInfo); toLogAdmin(__CLASS__ . '.'

我做了一个发送电子邮件的代码,但是SMTP连接的参数需要用户设置,所以我在代码中测试检查异常

我怀疑是否有办法创建消息并将其保存在.EML格式,然后使用PHPMailer重试

        try
    {
        if (!$mail->send())
        {
            $this->setErrorDescription($mail->ErrorInfo);
            toLogAdmin(__CLASS__ . '.' . __FUNCTION__ . ' => Erro ao enviar a mensagem de teste de conexão usando ' . $server_name . ' na porta ' . $server_port . ' e usuario ' . $username . ', erro : ' . $mail->ErrorInfo, true);
            return false;
        }
    }
    catch(Exception $exception)
    {
        $this->setErrorDescription($mail->ErrorInfo);
        toLogAdmin(__CLASS__ . '.' . __FUNCTION__ . ' => Excecao ao enviar a mensagem de teste de conexao de email ' . $server_name . ' na porta ' . $server_port . ' e usuario ' . $username . ', erro : ' . $mail->ErrorInfo, true);
        return false;
    }

您可以通过调用
getSentMIMEMessage()
获得完整的RFC822消息,但我建议您不要这样做。保存所有电子邮件参数以便再次创建邮件,或者更好的做法是安装本地邮件服务器并通过该服务器发送邮件,该服务器将负责重试以及邮件服务器的所有其他功能。用PHP编写邮件服务器毫无意义,这几乎就是您的建议。

问题在于,我将使用客户的电子邮件/服务器/密码发送邮件,因此,如果他的服务器出现问题,谁不发送邮件是我。我的想法是,当外部问题(在客户的SMTP服务器上)导致异常时,我以“电子邮件”格式复制本地副本,稍后再试