Php 未使用Gmail SMTP通过Swift Mailer发送电子邮件

Php 未使用Gmail SMTP通过Swift Mailer发送电子邮件,php,email,gmail,swiftmailer,Php,Email,Gmail,Swiftmailer,我正在尝试使用Gmail SMTP从Swift Mailer发送电子邮件。它可以方便地发送电子邮件一段时间,但随后就完全停止发送,特别是当我在一天左右后恢复工作时。它显示以下错误: 无法与主机smtp.gmail.com[#0]建立连接 下面是我用来发送电子邮件的示例代码: <?php require_once 'lib/swift_required.php'; try { echo '<pre>'; //Generati

我正在尝试使用Gmail SMTP从Swift Mailer发送电子邮件。它可以方便地发送电子邮件一段时间,但随后就完全停止发送,特别是当我在一天左右后恢复工作时。它显示以下错误:

无法与主机smtp.gmail.com[#0]建立连接

下面是我用来发送电子邮件的示例代码:

<?php
    require_once 'lib/swift_required.php';
    try
    {
        echo '<pre>';
        //Generating the Email Content
        $message = Swift_Message::newInstance()
                    ->setFrom(array('myemail@gmail.com' => 'No Reply'))
                    ->setTo(array('recipient@gmail.com' => 'Recipient'))
                    ->setSubject('Test Email')
                    ->setBody("This is a Test Email to check SwiftMailer.");

        // Create the Mail Transport Configuration
        $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
                    ->setUsername('myemail@gmail.com')
                    ->setPassword('appPassword');

        //local domain sending
        $transport->setLocalDomain('[127.0.0.1]');

        $mailer = Swift_Mailer::newInstance($transport);

        //Send the email
        $sentFlag = $mailer->send($message);
    }
    catch (Exception $e)
    {
        echo $e->getMessage();
    }

?>

我正在使用应用程序密码,并且在我的Google帐户设置中启用了两步验证。我一直在寻找一个解决这个问题的办法,现在,我已经通过了许多其他相关的职位,但没有找到解决办法。请有人提出一个永久的解决方案

提前感谢。

如何使用Gmail SMTP使用Swift Mailer 请尝试以下代码:



希望它有帮助

尝试将('smtp.gmail.com',465,'ssl')更改为('smtp.gmail.com',587)。让我们看看这个错误发生了什么:预期响应代码为250,但得到了代码“530”,消息是“530 5.7.0必须首先发出STARTTLS命令。j62sm11357963wmf.4-gsmtp”抛出了错误:警告:stream_socket_enable_crypto():SSL操作失败,代码为1。OpenSSL错误消息:错误:14090086:SSL例程:SSL3\U GET\U SERVER\U证书:证书验证在C:\wamp64\www\domain.com\lib\classes\Swift\Transport\StreamBuffer.php联机时失败94@JunaidFarooq我编辑了代码以允许关闭ssl证书。希望它能帮助Hanks,@LasVegasCoder。它确实有效,但我想知道在没有认证/对等验证的情况下允许连接是否安全。我目前正在本地主机上尝试,但我将很快将其迁移到live server。我不想有任何安全风险。一旦迁移到live server,您可以删除该选项并允许证书验证。别忘了将这个答案标记为已被接受以帮助他人。
<?php
    require_once 'lib/swift_required.php';
    try
    {
        echo '<pre>';
        //Generating the Email Content
        $message = Swift_Message::newInstance()
                    ->setFrom(array('myemail@gmail.com' => 'No Reply'))
                    ->setTo(array('recipient@gmail.com' => 'Recipient'))
                    ->setSubject('Test Email')
                    ->setBody("This is a Test Email to check SwiftMailer.");

        // Create the Mail Transport Configuration
        $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
                    ->setUsername('myemail@gmail.com')
                    ->setPassword('appPassword')
                    ->setStreamOptions(array(
                     'ssl' => array(
                     'allow_self_signed' => true, 
                     'verify_peer' => false)));

        //local domain sending
        $transport->setLocalDomain('[127.0.0.1]');

        $mailer = Swift_Mailer::newInstance($transport);

        //Send the email
        $sentFlag = $mailer->send($message);
    }
    catch (Exception $e)
    {
        echo $e->getMessage();
    }

?>