Php 如何在zf2中使用smtp发送电子邮件?
我做了一个zf2动作,我想向保存在数据库中的用户发送电子邮件,所以我使用gmail发送电子邮件,但不向用户发送电子邮件 我如何在zf2中发送电子邮件 这是我的密码:Php 如何在zf2中使用smtp发送电子邮件?,php,email,zend-framework2,smtp,Php,Email,Zend Framework2,Smtp,我做了一个zf2动作,我想向保存在数据库中的用户发送电子邮件,所以我使用gmail发送电子邮件,但不向用户发送电子邮件 我如何在zf2中发送电子邮件 这是我的密码: public function addAction() { //check permissions if(!$this->acl->isAllowed($this->user->user_type, 'user.create')) $this->redirect()->to
public function addAction()
{
//check permissions
if(!$this->acl->isAllowed($this->user->user_type, 'user.create'))
$this->redirect()->toRoute('admin_index');
//
$this->layout()->top_heading = 'Add User';
$dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
////////////////////////////////
$form = new UserForm();
$update=false;
$message='';
if($this->getRequest()->isPost())
{
$post = $this->getRequest()->getPost();
$form->setInputFilter($form->getInputFilter());
$form->setData($post);
if($form->isValid())
{
$formData=$form->getData();
$s = new User();
$user = $dm->getRepository('Calendar\Document\User')->findOneBy(array(
"username" => $formData['username']
));
$email = $dm->getRepository('Calendar\Document\User')->findOneBy(array(
"email" => $formData['email']
));
if($user || $email)
{
$update=2;
$message='User Already Exists.';
}
if($post['role']=='admin')
{
$update=2;
$message="Select Some Other Role.";
}
else
{
$s->setProperty('username',$post['username']);
$s->setProperty('password',md5($post['password']));
$s->setProperty('email',$post['email']);
$s->setProperty('user_type',$post['role']);
$s->setProperty('dataentered',date('Y-m-d H:m:i'));
$dm->persist($s);
$dm->flush();
//echo new Response($s->getProperty('id'));
//
$update=1;
$message='User Added Successfully.';
$form = new UserForm();
$config = array('ssl' => 'tls',
'auth' => 'login',
'username' => 'marif252@gmail.com',
'password' => 'password');
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail();
$mail->setBodyHtml($bodytext);
$mail->setFrom('marif252@gmail.com');
$mail->addTo($formData['email'], $formData['username']);
$mail->setSubject('Profile Activation');
$mail->send($transport);
如何在zf2中使用gmail发送电子邮件?尝试使用smtp,如下所示:
$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' => 'YOUR GMAIL ADDRESS',
'password' => 'YOUR PASSWORD',
'ssl' => 'tls',
));
$transport = new \Zend\Mail\Transport\Smtp($smtpOptions);
$transport->send($message);
看到了吗:我用过这个,但没有电子邮件发送。电子邮件根本不在你的收件箱中,或者你收到了错误消息吗?你检查过你的垃圾邮件文件夹吗?你也检查了你的php\u error.log吗?我检查了我的错误日志这个错误显示了致命错误:找不到类“Calendar\\Controller\\Zend\u Mail\u Transport\u Smtp”in@MuhammadArif您的代码仍在使用未初始化的post数据。使用
$post['foo']
的任何内容都来自请求实例,只是原始的post数据-在设置实体属性时,您需要使用$formData['foo']
,因为这将是通过输入过滤器验证的数据。但是我在其中设置了$post[email]?我使用您的代码,但显示的错误消息无法打开socket您的服务器是否支持openssl?确保extension=php\u openssl.dll在php.ini中未注释。如果是,请尝试注释'ssl'=>'tls',我检查了我的openssl是否已启用,因此我注释'ssl'=>'tls',但存在相同的错误。您可以检查错误日志吗?如果你不能-那么请打电话给你的托管公司,告诉他们这个错误