首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPMailer:尝试使用Gmail的SMTP时找不到类名

PHPMailer:尝试使用Gmail的SMTP时找不到类名
EN

Stack Overflow用户
提问于 2017-03-26 18:54:26
回答 1查看 237关注 0票数 0

我已经试着让PHPMailer工作一周了。起初,我没有使用SMTP,但由于PHP权限的原因,我不得不更改此设置。

由于正在使用的电子邮件地址似乎是通过Gmail购买的(它有不同的域名,而不是@gmail.com),我认为最好使用谷歌的Gmail SMTP服务。(这里有https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2的解释)

由于经验不足,也没有任何方法可以通过命令行接近我的主机,所以我用本地安装的composer版本获得了所有必要的软件包,并通过FTP将所有依赖项复制到我的主机上。我现在的文件夹结构是这样的:

代码语言:javascript
复制
/phpmailer
/phpmailer/extras/
/phpmailer/language/
/phpmailer/vendor/
/phpmailer/vendor/composer/
/phpmailer/vendor/eloquent/
/phpmailer/vendor/guzzlehttp/
/phpmailer/vendor/league/
/phpmailer/vendor/paragonie/
/phpmailer/vendor/phpmailer/
/phpmailer/vendor/psr/
/phpmailer/vendor/autoload.php

但是,我一直收到以下错误:

致命错误:在第55行的/domain/phpmailer/class.phpmaileroauthgoogle.php中找不到类‘\OAuth2\Client\Provider\Google’

它看起来好像在某处缺少了include或require,所以我尝试在我的PHP中添加require('vendor/autoload.php');来处理应该启动邮件发送过程的表单,但它似乎没有解决任何问题。我也不认为有必要将类似的内容添加到/phpmailer/中的文件中。

返回给我的其余日志如下所示:

2017-03-26 10:23:52服务端->客户端: 220 smtp.gmail.com ESMTP e16sm10314377ra.62- gsmtp 2017-03-26 10:23:52客户端->服务端: EHLO www.domain.com 2017-03-26 10:23:53服务端->客户端: 250-smtp.gmail.com2a0b:7280:100:0:447:56ff:fe00:207b 250-SIZE 35882577 250-8BITMIME 250 -STARTTLS250-ENHANCEDSTATUSCODES 250-流水线250-分块250 SMTPUTF8 2017-03-26 10:23:53客户端->服务器:STARTTLS2017-03-26 10:23:53服务器->客户端: 220 2.0.0准备启动TLS2017-03-26 10:23:53客户端->服务器: EHLO www.domain.com 2017-03-26 10:23:53服务器->客户端: 250-smtp.gmail.com2a0b:7280:100:0:447:56ff:fe00:207b 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN普通XOAUTH2 -CLIENTTOKEN OAUTHBEARER XOAUTH 250-ENHANCEDSTATUSCODES 250 -流水线250-分块250 SMTPUTF8

这看起来并不是身份验证的问题。

这是composer.json中的内容:

代码语言:javascript
复制
{
"name": "phpmailer/phpmailer",
"type": "library",
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"authors": [
    {
        "name": "Marcus Bointon",
        "email": "phpmailer@synchromedia.co.uk"
    },
    {
        "name": "Jim Jagielski",
        "email": "jimjag@gmail.com"
    },
    {
        "name": "Andy Prevost",
        "email": "codeworxtech@users.sourceforge.net"
    },
    {
        "name": "Brent R. Matzelle"
    }
],
"require": {
    "php": ">=5.0.0",
    "phpmailer/phpmailer": "^5.2",
    "league/oauth2-client": "^2.2",
    "league/oauth2-google": "^2.0"
},
"require-dev": {
    "doctrine/annotations": "1.2.*",
    "jms/serializer": "0.16.*",
    "phpdocumentor/phpdocumentor": "2.*",
    "phpunit/phpunit": "4.8.*",
    "symfony/debug": "2.8.*",
    "symfony/filesystem": "2.8.*",
    "symfony/translation": "2.8.*",
    "symfony/yaml": "2.8.*",
    "zendframework/zend-cache": "2.5.1",
    "zendframework/zend-config": "2.5.1",
    "zendframework/zend-eventmanager": "2.5.1",
    "zendframework/zend-filter": "2.5.1",
    "zendframework/zend-i18n": "2.5.1",
    "zendframework/zend-json": "2.5.1",
    "zendframework/zend-math": "2.5.1",
    "zendframework/zend-serializer": "2.5.*",
    "zendframework/zend-servicemanager": "2.5.*",
    "zendframework/zend-stdlib": "2.5.1"
},
"suggest": {
    "league/oauth2-google": "Needed for Google XOAUTH2 authentication"
},
"autoload": {
    "classmap": [
        "class.phpmailer.php",
        "class.phpmaileroauth.php",
        "class.phpmaileroauthgoogle.php",
        "class.smtp.php",
        "class.pop3.php",
        "extras/EasyPeasyICS.php",
        "extras/ntlm_sasl_client.php"
    ]
},
"license": "LGPL-2.1"
}

我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-03-26 20:51:58

(编辑:抱歉,我没有看到您已经将依赖添加到您的composer.json中)

额外的依赖项应该放在你自己的应用程序的composer.json中(而不是PHPMailer的),因为你永远不需要编辑通过composer加载的包。您可能只需要运行composer update (不仅仅是composer install)。否则,它将只加载最新的composer.lock文件中的包,而不是您添加的额外包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43027823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档