Php 在zend中使用gmail smtp发送电子邮件?

Php 在zend中使用gmail smtp发送电子邮件?,php,zend-framework,email,gmail,Php,Zend Framework,Email,Gmail,可能重复: 我有以下配置: smtp.type = Zend_Mail_Transport_Smtp smtp.smtpServer = "smtp.gmail.com" smtp.username = "ddd@gmail.com" smtp.password = "dddd" smtp.email = "ddd@gmail.com" smtp.port = "587" smtp.ssl = "tls" smtp.auth = "login" 我遇到以下错误: 5.7.0 Must iss

可能重复:

我有以下配置:

smtp.type = Zend_Mail_Transport_Smtp
smtp.smtpServer = "smtp.gmail.com"
smtp.username = "ddd@gmail.com"
smtp.password = "dddd"
smtp.email = "ddd@gmail.com"
smtp.port = "587"
smtp.ssl = "tls"
smtp.auth = "login"
我遇到以下错误:

5.7.0 Must issue a STARTTLS command first. 74sm813723wem.41
我的代码:

public function sendEmail( $mailData, $bootstrap = null ) {

        // Get SMTP server configurations
        if ( $bootstrap == null ) {
            $front = Zend_Controller_Front::getInstance();
            $bootstrap = $front->getParam('bootstrap');
        }
        $smtpSettings = $bootstrap->getOption('smtp');

        print_r($smtpSettings);

        // Only pass username password settings if the authentication is required.
        if ( $smtpSettings['auth'] == 'login' ) {

            $config = array('ssl' => $smtpSettings['ssl'],
                        'username' => $smtpSettings['username'],
                        'password' => $smtpSettings['password']);

            $transport = new Zend_Mail_Transport_Smtp( $smtpSettings['smtpServer'], $config );
        } else {
            $transport = new Zend_Mail_Transport_Smtp( $smtpSettings['smtpServer'] );
        }

        $mail = new Zend_Mail( 'utf-8' );

        try {

            if ( $mailData['user'] == true ) { 
                $mail->setFrom( $mailData['from'], $mailData['fromName'] );

            } else {
                  $mail->setFrom( $smtpSettings['email'], "eCHDP" );
            }

            // Do we have a single reciepent or multiple receipents?
            if ( !is_array($mailData['to']) ) {
                $mail->addTo( $mailData['to'] , $mailData['toName'] );
            } else {
                // We have multiple receipents. Add all of them.
                foreach ( $mailData['to'] as $id => $value ) {
                    $mail->addTo( $value , $mailData['toName'][$id] );
                }
            }

            $mail->setSubject( $mailData['subject'] );
            $mail->setBodyHtml( $mailData['body'] );

            // If attachment found then attach
            if ( $mailData['attachment'] ) {
                $attach = new Zend_Mime_Part( file_get_contents( $mailData['attachment'] ) );
                $attach->type = 'application/pdf';
                $attach->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
                $attach->filename = 'Invoice.pdf';
                $mail->addAttachment( $attach );
            }

            $mail->send( $transport );

            return true;

        } catch ( Exception $e ) {
            echo "Error sending Email : ";
            $logger = Zend_Registry::get('Logger');
            $logger->err($e->getMessage());
            echo $e->getMessage() . "\n\n\n";
            return false;
        }

    } 
有人能猜出是什么错误吗?如果需要,我也可以发布代码


谢谢

您可以尝试:
ssl=tls
port=587
您可以尝试:
ssl=tls
port=587
这是我们的应用程序。ini

resources.mail.transport.type = Zend_Mail_Transport_Smtp
resources.mail.transport.host = "smtp.gmail.com"
resources.mail.transport.port = 587
resources.mail.transport.auth = "login"
resources.mail.transport.username = "email@address.com"
resources.mail.transport.password = "password"
resources.mail.transport.ssl = "tls"

而且它“只是工作(tm)”

这来自我们的application.ini

resources.mail.transport.type = Zend_Mail_Transport_Smtp
resources.mail.transport.host = "smtp.gmail.com"
resources.mail.transport.port = 587
resources.mail.transport.auth = "login"
resources.mail.transport.username = "email@address.com"
resources.mail.transport.password = "password"
resources.mail.transport.ssl = "tls"

而且它“只是工作(tm)”

我猜您必须先发出STARTTLS命令;)不,说真的:您使用的是
ssl=ssl
,您应该尝试
ssl=tls
-这是两种保护与服务器连接的不同方法。我猜您必须先发出STARTTLS命令;)不,说真的:您使用的是
ssl=ssl
,您应该尝试
ssl=tls
-这是两种不同的方法来保护与服务器的连接。确定。让我试试这个,但是你在哪里使用这个
资源。邮件。传输。键入
。。在application.in:)中,您是只使用Zend_Mail,还是使用完整的ZF站点?无论如何,您应该能够在您的规范中使用我们的配置值。当与Zend MVC一起用作邮件传输时,邮件资源只是自动注册到Zend_mail。我尝试了此设置,但错误已更改:
5.5.1需要身份验证。在5.5.1了解更多信息http://mail.google.com/support/bin/answer.py?answer=14257 h43sm824480wes.35
@Phliplip:我正在Zend环境中运行它,但我的应用程序中没有
“resources.mail.transport.type=Zend\u mail\u transport\u Smtp”
。InOK。让我试试这个,但是你在哪里使用这个
资源。邮件。传输。键入
。。在application.in:)中,您是只使用Zend_Mail,还是使用完整的ZF站点?无论如何,您应该能够在您的规范中使用我们的配置值。当与Zend MVC一起用作邮件传输时,邮件资源只是自动注册到Zend_mail。我尝试了此设置,但错误已更改:
5.5.1需要身份验证。在5.5.1了解更多信息http://mail.google.com/support/bin/answer.py?answer=14257 h43sm824480wes.35
@Phliplip:我正在Zend环境中运行它,但我的application.ini中没有
“resources.mail.transport.type=Zend\u mail\u transport\u Smtp”