Отправка писем с сервера 1and1 smtp с использованием Zend Framework - PullRequest
2 голосов
/ 10 апреля 2011

Я знаю, что уже было много вопросов о smtp, хостинге 1and1 и Zend Framework.Я читаю их часами и до сих пор ничего не получил (может, я пропустил самый важный?).Итак, давайте перейдем к делу:

  • Я получаю снова и снова одну и ту же ошибку «Сообщение: Соединение отказано», независимо от того, какой SMTP я пытаюсь использовать.Я понимаю, что могут быть проблемы с внешними серверами, такими как gmail (который я тоже пробовал), но 1and1 smpt ...
  • Я использую довольно распространенную конфигурацию:

    email.configTransport.auth = "вход" email.configTransport.username = "my@mail.com" email.configTransport.password = "пароль" email.configTransport.host = "smtp.1and1.pl"

А затем в начальной загрузке я устанавливаю транспорт по умолчанию:

protected function _initDefaultEmailTransport(){

    $configTransport = $this->getOption('email');

    $tr = new Zend_Mail_Transport_Smtp($configTransport['configTransport']['host'],
                                        $configTransport['configTransport']);

    Zend_Mail::setDefaultTransport($tr);
}
  • Что интересно, больше всего он работает на моем локальном хосте (также через Thunderbird).Поэтому я предполагаю, что конфигурация в порядке и сервер smtp работает.
  • Я пробовал порты 25 и 587. Та же проблема.Если я поменяю пароль на неправильный, я снова получу ту же ошибку, поэтому похоже, что у меня проблема на этапе подключения, не так ли?

Я будуотлично подходит для любых идей, что может быть не так.


Я не вижу места, где это можно было бы перезаписать.Кроме того, я пробовал как с производственной, так и с рабочей конфигурацией.OpenSSL включен наверняка, я уже проверял это.Вот мой файл конфигурации.

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutpath = APPLICATION_PATH "/layouts/scripts/"

autoloaderNamespaces[] = "Doctrine"

doctrine.dsn = "mysql://...."

doctrine.data_fixtures_path = APPLICATION_PATH "/../doctrine/data/fixtures"
doctrine.models_path = APPLICATION_PATH "/models"
doctrine.migrations_path = APPLICATION_PATH "/../doctrine/migrations"
doctrine.sql_path = APPLICATION_PATH "/../doctrine/data/sql"
doctrine.yaml_schema_path = APPLICATION_PATH "/../doctrine/schema"

doctrine.generate_models_options.pearStyle = true
doctrine.generate_models_options.generateTableClasses = true
doctrine.generate_models_options.generateBaseClasses = true
doctrine.generate_models_options.baseClassPrefix = "Base_"
doctrine.generate_models_options.baseClassesDirectory =
doctrine.generate_models_options.classPrefixFiles = false
doctrine.generate_models_options.classPrefix = "Application_Model_"

resources.mail.transport.type = "smtp"
resources.mail.transport.host = "smtp.gmail.com"
resources.mail.transport.auth = "login"
resources.mail.transport.ssl = "tls"
resources.mail.transport.username = "username"
resources.mail.transport.password = "pass"
resources.mail.transport.register = true

autoloaderNamespaces[] = "ZC"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

А вот полное сообщение об ошибке:

Stack trace:

#0 /homepages/46/d339149978/htdocs/library/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect('tcp://smtp.gmai...')
#1 /homepages/46/d339149978/htdocs/library/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()
#2 /homepages/46/d339149978/htdocs/library/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
#3 /homepages/46/d339149978/htdocs/library/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#4 /homepages/46/d339149978/htdocs/application/controllers/ContactController.php(97): Zend_Mail->send()
#5 /homepages/46/d339149978/htdocs/application/controllers/ContactController.php(74): ContactController->sendContactMail(Array)
#6 /homepages/46/d339149978/htdocs/library/Zend/Controller/Action.php(513): ContactController->sendAction()
#7 /homepages/46/d339149978/htdocs/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('sendAction')
#8 /homepages/46/d339149978/htdocs/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 /homepages/46/d339149978/htdocs/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#10 /homepages/46/d339149978/htdocs/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#11 /homepages/46/d339149978/htdocs/public/index.php(27): Zend_Application->run()
#12 {main}  

В воскресенье я отправил электронное письмо на адрес 1and1 с вопросом, есть ли проблемы с отправкой электронной почты.почта через SMTP.Сегодня я получил ответ о том, что все работает нормально, и я должен проверить свои сценарии ...

Ответы [ 3 ]

4 голосов
/ 27 октября 2011

Я часами пробовал все, чтобы серверы 1 и 1 принимали почту SMTP. Он работает с удаленного сервера тестирования (используя следующее:

$mailhost = 'auth.smtp.1and1.co.uk';
$mailconfig = array('auth'     => 'login',
                    'username' => 'myaddress@example.com',
            'password' => 'myPassword');
$transport = new Zend_Mail_Transport_Smtp($mailhost, $mailconfig);
Zend_Mail::setDefaultTransport($transport);

При развертывании на 1 и 1 появляется сообщение «Отказано в соединении». Другие форумы утверждают, что это потому, что 1and1 не разрешает SMTP на своих собственных серверах, поэтому вы должны использовать Sendmail (). Приведенный выше сценарий становится: -

$transport = new Zend_Mail_Transport_Sendmail('-freturn_to_myaddress@example.com');
Zend_Mail::setDefaultTransport($transport);

(Обратите внимание, я указал обратный адрес)

Это будет работать на серверах 1 и 1.

Chris

1 голос
/ 10 апреля 2011

Возможно, это не «то» решение, но оно может помочь вам убедиться, что ваши ручные настройки не вызывают ошибок.

resources.mail.transport.type = "smtp"
resources.mail.transport.host = "smtp.gmail.com"
resources.mail.transport.auth = "login"
resources.mail.transport.ssl = "tls"
resources.mail.transport.username = "yourlogin" ; without the @ part
resources.mail.transport.password = "yourpasswd"
resources.mail.transport.register = true

Замените yourlogin & yourpasswd на ваши, ион должен работать.

Последний параметр, register регистрирует транспорт по умолчанию, который вы ранее установили.


Как указано в вашем комментарии, если он работает локально, вот контрольный список:

  • Убедитесь, что APPLICATION_ENV не переопределяет ваши настройки (production & development)
  • Убедитесь, что на вашем хосте установлено OpenSSL (этонеобходимо подключиться к Gmail через безопасное соединение)
  • Опубликовать сообщение об ошибке
  • Опубликовать файл config.ini
0 голосов
/ 10 апреля 2011

Я получаю снова и снова одну и ту же ошибку «Сообщение: соединение отказано», независимо от того, какой SMTP я пытаюсь использовать

«Отказ в соединении» означает, что либо удаленный сервер отклонил соединение, либо локальный компьютер имеет брандмауэр или политику безопасности, которая препятствовала созданию соединения с самого начала.

Если вы получаете эту ошибку независимо от того, к какому SMTP-серверу вы подключаетесь, ваш хостинг-провайдер блокирует соединение. Вам нужно будет связаться с ними и спросить о проблеме.

Помните, что 1 & 1 был ужасным хостинг-провайдером в течение более десятилетия , и его следует избегать. Даже Dreamhost, один из самых дешевых поставщиков, предоставляет лучший сервис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...