Php 电子邮件联系人表单未发送,出现错误Zend Framework 2

Php 电子邮件联系人表单未发送,出现错误Zend Framework 2,php,zend-framework,frameworks,email,Php,Zend Framework,Frameworks,Email,我继承了一个使用zend framework 2构建的客户端网站。我已经想出了如何将它移动到我的主机,这是伟大的,但有一个问题仍然存在,那就是电子邮件联系形式。通过联系人表单发送电子邮件时,我收到以下错误。我怀疑这是一个配置区域,但在我想知道是否有人能为我指出修复此错误的正确方向之前,我没有使用过此系统 干杯 发生了一个错误。例外情况:\n#0/homepages/43/d387176596/htdocs/zAJSL/vendors/zendframework/zendframework/l

我继承了一个使用zend framework 2构建的客户端网站。我已经想出了如何将它移动到我的主机,这是伟大的,但有一个问题仍然存在,那就是电子邮件联系形式。通过联系人表单发送电子邮件时,我收到以下错误。我怀疑这是一个配置区域,但在我想知道是否有人能为我指出修复此错误的正确方向之前,我没有使用过此系统

干杯

发生了一个错误。例外情况:\n#0/homepages/43/d387176596/htdocs/zAJSL/vendors/zendframework/zendframework/library/Zend/Mail/Protocol/Smtp.php(149):Zend\Mail\Protocol\AbstractProtocol->tcp://auth.smtp...)#1/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mail/Transport/Smtp.php(340):Zend\Mail\Protocol\Smtp->connect()#2/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mail/Transport/Smtp.php(326):Zend\Mail\Transport\Smtp->connect()#3/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mail/Transport/Smtp.php(337):Zend\Mail\Transport\Smtp->lazyLoadConnection()#4/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mail/Transport/Smtp.php(204):Zend\Mail\Transport\Smtp->->()#5/homepages/43/d387176596/htdocs/zAJSL/vendor/acelaya/zf2 acmailer/src/Service/MailService.php(88):Zend\Mail\Transport\Smtp\Smtp发送(对象)(Zend\Mail\Message))#6/homepages/43/d387176596/htdocs/zAJSL/module/W7Contact/src/W7Contact/Model/Model.php(99):AcMailer\Service\MailService->send()#7/homepages/43/d387176596/htdocs/zAJSL/module/W7Contact/src/W7Contact/Controller/IndexController.php(117):W7Contact\Model\Model->sendContactEmail(数组)#8/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83):W7Contact\Controller\IndexController->indexAction()#9[内部函数]:Zend\Mvc\Controller\AbstractActionController->->onDispatch(对象(Zend\Mvc\MvcEvent))10/homepages/43/d387176596/htdocs/zAJSL/vendors/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468):调用_user_func(数组,对象(Zend\Mvc\MvcEvent))#11/homepages/43/d387176596/htdocs/zAJSL/vendors/zendframework/zendframework/zendframework/library/Zend/EventManager/EventManager/EventManager.php(207):Zend\EventManager\EventManager->triggerListeners('dispatch',Object(Zend\Mvc\MvcEvent),Object(Closure))#12/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(116):Zend\EventManager\EventManager->->('dispatch',',),Object(Zend\Mvc\Mvc\MvcEvent),Object(Closure))#13/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(113):Zend\Mvc\Controller\AbstractController->dispatch(对象(Zend\Http\PhpEnvironment\Request)、对象(Zend\Http\PhpEnvironment\Response))#14[内部函数]:Zend\Mvc\DispatchListener->>onDispatch(对象(Zend\Mvc\Mvc\Mvc\MvcEvent))15/homepages/43/d387176596/htdocs/zAJSL/vendors/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468):调用用户func(数组,对象(Zend\Mvc\MvcEvent))#16/homepages/43/d387176596/htdocs/zAJSL/vendors/zendframework/zendframework/zendframework/library/Zend/EventManager/EventManager/EventManager.php(207):Zend\EventManager\EventManager->triggerListeners('dispatch',Object(Zend\Mvc\MvcEvent),Object(Closure))#17/homepages/43/d387176596/htdocs/zAJSL/vendor/zendframework/library/Zend/Mvc/Application.php(313):Zend\EventManager\EventManager->触发器('dispatch',',Object(Zend\Mvc\MvcEvent),Object(Closure))18/homepages/43/d387176596/htdocs/zAJSL/public/index.php(40):Zend\Mvc\Application->run()#19{main}

更新日期:2017年3月19日

我在这里找到了配置:

/供应商/acelaya/zf2 acmailer/config

那里有2个文件

module.config.php&mail.global.php.dist

mail.global.php.dist似乎有一些配置选项,我尝试过,但似乎没有帮助。我需要将其设置为使用以下imap设置:

设置IMAP
传入服务器imap.1和1.co.uk
启用SSL的端口993
传出服务器(SMTP)auth.SMTP.1和1.co.uk
启用TLS的传出端口587
传出服务器需要身份验证
(用户名和密码)?是

这是文件


))

因此基本上,Zend Framework 2/3将加载config/autoload/.local.php和config/autoload/.global.php中的任何配置文件(先全局,然后本地,这样本地可以覆盖全局文件)


在您的情况下,您需要从文件中删除
.dist
,并将您给我的设置放入。实际上,您甚至应该在本地文件中设置设置,因为这取决于您的环境。

如果有人看到这一点,并且有相同的问题,那么真正的问题是:

错: “邮件适配器”=>“Zend\mail\Transport\smtp”

更正:“邮件适配器”=>“Zend\mail\Transport\Sendmail”

1和1使用sendmail而不是smtp

对于1和1,您需要以下设置:

'server'=>'auth.smtp.1和1.co.uk'

“ssl”=>“tls”

'连接\u类'=>'smtp'

“端口”=>587

用户名是您的电子邮件,其他设置本身就是明证

再次感谢托马斯在正确的方向上帮助我。我花了4天的大部分时间研究这个问题,所以我希望这能找到其他需要它的人


干杯

请您提供详细信息(特别是您对ZF Acmailer的配置:(我猜您的smtp详细信息是错误的(例如主机不存在或无法从部署计算机访问,因此我们无法提供更多帮助)谢谢你的回复Thomas,我已经用我能找到的所有信息更新了上面的帖子Hanks Thomas,我注意到上一个开发者在一些细节上做了修改
'mail_options' => array(

    /***********
     * ADAPTER *
     ***********/

    /*
     * The mail adapter to be used.
     * You can define any class implementing Zend\Mail\Transport\TransportInterface,
     * either the class fully qualified name or the instance to be used.
     * For standard mail transports, you can use aliases,
     *      - sendmail  => Zend\Mail\Transport\Sendmail
     *      - smtp      => Zend\Mail\Transport\Smtp
     *      - file      => Zend\Mail\Transport\File
     *      - null      => Zend\Mail\Transport\Null
     * Default value is Zend\Mail\Transport\Sendmail
     */
    //'mail_adapter' => 'Zend\Mail\Transport\Sendmail',

    /*
     * A service name which will return a Zend\Mail\Transport\TransportInterface instance to be used as the
     * transport object.
     * If this is set to something other than null, the 'mail_adapter' option will be ignored
     * Default value is null
     *
     * Note: Many configuration options are useful for standard transport objects only.
     * The mail_dapater_service is usefull to configure your own transport object with custom options
     */
    //'mail_adapter_service' => null,

    /************************
     * COMMON CONFIGURATION *
     ************************/

    /*
     * From email address of the email.
     * It would be used as SMTP username if mail_adapter is set to Zend\Mail\Transport\Smtp
     * and no smtp_user is provided
     * Default value is an empty string
     */
    //'from' => '',

    /*
     * From name to be displayed instead of from address.
     * Default value is an empty string
     */
    //'from_name' => '',

    /*
     * Destination addresses of sent emails. It can be an email address as string or an array of email addresses.
     * Default value is an empty array.
     */
    //'to' => array(),

    /*
     * Copy destination addresses of sent emails.
     * It can be an email address as string or an array of email addresses.
     * Default value is an empty array
     */
    //'cc' => array(),

    /*
     * Hidden copy destination addresses of sent emails.
     * It can be an email address as string or an array of email addresses.
     * Default value is an empty array
     */
    //'bcc' => array(),

    /*
     * Email subject.
     * Default value is an empty string
     */
    //'subject' => '',

    /*
     * Email body. Can be a string or hardcoded HTML.
     * If a more complex value is nedded it will have to be done in the code.
     * Default value is an empty string.
     */
    //'body' => '',

    /*
     * The charset to be set to the body when setting an HTML string body.
     * It will be ignored if the body is a plain text string.
     * Default value is 'utf-8'.
     */
    //'body_charset' => 'utf-8',

    /*
     * Defines information to create the email body from a view partial.
     * It defines template path and template params.
     * The path will be resolved by a view resolver, so you need to place mail templates inside a view
     * folder of one of your modules or customize your template map and template path stack.
     * Params will be a group of key-value pairs.
     * It has a use_template property wich tells if template should be used automatically,
     * ignoring anything defined at 'body' option. It is false by default.
     *
     * The 'children' property allows to define children for the template, in case you want to use layouts.
     * You can define any number of children. The key is the 'capture_to' property.
     * If you set the key 'content' to the child, you should have something like echo $this->content in you layout.
     * Any child can have its own children, so you can nest views into other views recursively.
     * By default no children are used
     */
    //'template' => array(
    //    'use_template'  => false,
    //    'path'          => 'ac-mailer/mail-templates/layout',
    //    'params'        => array(),
    //    'children'      => array(
    //        'content'   => array(
    //            'path'   => 'ac-mailer/mail-templates/mail',
    //            'params' => array(),
    //        )
    //    )
    //),

    /*
     * Attachments config.
     * Allows to define an array of files that will be attached to the message,
     * or even a directory that will be iterated to attach all found files.
     * Set directory will only be iterated if 'iterate' property is true and 'path' is a valid directory.
     * If 'recursive' is true all nested directories will be iterated too.
     * If both files and dir are set, all files will be merged without duplication
     * By default the files array is empty and the directory won't be iterated
     */
    //'attachments' => array(
    //    'files' => array(),
    //    'dir' => array(
    //        'iterate'   => false,
    //        'path'      => 'data/mail/attachments',
    //        'recursive' => false,
    //    ),
    //),

    /**********************
     * SMTP CONFIGURATION *
     **********************/

    /*
     * Hostname or IP address of mail server to be used.
     * Default value is localhost
     */
    'server' => 'auth.smtp.1and1.co.uk',

    /*
     * If Zend\Mail\Transport\Smtp adapter is used, this is the SMTP authentication identity.
     * If this is not set, from option is used.
     * Default value is an empty string
     */
    'smtp_user' => '****@****.co.uk',

    /*
     * If Zend\Mail\Transport\Smtp adapter is used, this is the SMTP authentication credential.
     * Default value is an empty string
     */
    'smtp_password' => '********',

    /*
     * If Zend\Mail\Transport\Smtp adapter is used, this defines the SSL type to be used, 'ssl' or 'tls'.
     * Boolean false should be used to disable SSL.
     * Default value is false
     */
    'ssl' => true,

    /*
     * If Zend\Mail\Transport\Smtp adapter is used, this is the connection class used for authentication.
     * Value can be one of 'smtp', 'plain', 'login' or 'crammd5'.
     * Default value is login. ZF2 default is smtp
     */
    //'connection_class' => 'login',

    /*
     * If Zend\Mail\Transport\Smtp adapter is used, this is the SMTP server port
     */
    'port' => 993,

    /**********************
     * FILE CONFIGURATION *
     **********************/

    /*
     * If Zend\Mail\Transport\File adapter is used, thi sis the folder where the file is going to be saved
     * Default value is 'data/mail/output'
     */
    //'file_path' => 'data/mail/output',

    /**
     * A callable that will get the Zend\Mail\Transport\File object as an argument and should return the filename
     * Default value is null, in which case a default callable will be used
     */
    //'file_callback' => null,

)