Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend framework 2-无法设置';从';发送电子邮件时的字段_Php_Gmail_Zend Framework2 - Fatal编程技术网

Php Zend framework 2-无法设置';从';发送电子邮件时的字段

Php Zend framework 2-无法设置';从';发送电子邮件时的字段,php,gmail,zend-framework2,Php,Gmail,Zend Framework2,我尝试使用ZF2发送电子邮件 $message = new \Zend\Mail\Message(); $message->setBody('This is the body'); $message->setFrom('myemail@mydomain.com'); $message->addTo('someone@somedomain.com'); $message->setSubject('Test subject');

我尝试使用ZF2发送电子邮件

    $message = new \Zend\Mail\Message();
    $message->setBody('This is the body');
    $message->setFrom('myemail@mydomain.com');
    $message->addTo('someone@somedomain.com');
    $message->setSubject('Test subject');

    $smtpOptions = new \Zend\Mail\Transport\SmtpOptions();

    $smtpOptions->setHost('smtp.gmail.com')
        ->setConnectionClass('login')
        ->setName('smtp.gmail.com')
        ->setConnectionConfig(array(
            'username' => 'admin@mydomain.com',
            'password' => 'mypassword',
            'ssl' => 'tls',
            'port' => '123',
        ));

    $transport = new \Zend\Mail\Transport\Smtp($smtpOptions);
    $transport->send($message);
我希望发件人是'myemail@mydomain.com“但总是这样”admin@mydomain.com.com"

我该怎么做才能解决这个问题?我做错了什么

编辑:


我还尝试了setSender(),得到了相同的结果查看了\Zend\Mail\Transport\Smtp\Zend\Mail\Message类的源代码,我觉得你做得不错;发送函数(Smtp类)首先连接到Smtp服务器,然后准备邮件。其中一项任务是获取发件人地址,这会给您带来问题。代码如下:

protected function prepareFromAddress(Message $message)
{
    $sender = $message->getSender();
    if ($sender instanceof Address\AddressInterface) {
        return $sender->getEmail();
    }

    $from = $message->getFrom();
    if (!count($from)) { // Per RFC 2822 3.6
        throw new Exception\RuntimeException(sprintf(
            '%s transport expects either a Sender or at least one From address in the Message; none provided',
            __CLASS__
        ));
    }

    $from->rewind();
    $sender = $from->current();
    return $sender->getEmail();
}
我还没有自己测试过,你能检查一下它是否从$message->getFrom()中获取了数据吗?或者它可以从$sender->getEmail()中获取


您可以尝试使用setSender()而不是setFrom()来设置myemail@mydomain.com'定义消息时的地址。我不太明白它们之间的区别,但看看prepareFromAddress函数,您似乎可以使用它来放置发件人地址。

在所有项目中搜索
admin@mydomain.com.com
-很可能你找不到它。如果是这样的话,那么您的服务器配置设置为在发送之前简单地覆盖特定的邮件头。这只是在一个地方,感谢我已经尝试使用setSender(),但没有成功。如果设置了发送方,它将接收发送方;否则,它将接收发件人。我检查了邮件头,数据被正确地发送到gmail服务器