Hello,
I work on my localhost.
I created a module that contains the sending of a personalized mail.
I arrived at the execute function of my controller sendemail.php but I have this error:
There has been an error processing your request
Also can I successfully send mail from my localhost?
Thanks in advance!
Could you please show your full code which you have tried for now?
Also check in your var/log or var/report folder to check error.
How to send Transaction Mail from Magento 2, Refer Blogs with full details, Module for send Transaction Mail in Magento 2
You can also send mail from a local server. you need to get an extension from link https://github.com/magepal/magento2-gmailsmtpapp
Install inside your project and follow steps which are defined in readme.php file in above module.
Thanks for your response!
this is my controller
<?php namespace Excellence\Custom\Controller\Custom; use Magento\Framework\App\RequestInterface; class Sendemail extends \Magento\Framework\App\Action\Action { /** * @var \Magento\Framework\App\Request\Http */ protected $_request; /** * @var \Magento\Framework\Mail\Template\TransportBuilder */ protected $_transportBuilder; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; public function __construct( \Magento\Framework\App\Action\Context $context , \Magento\Framework\App\Request\Http $request , \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder , \Magento\Store\Model\StoreManagerInterface $storeManager ) { $this->_request = $request; $this->_transportBuilder = $transportBuilder; $this->_storeManager = $storeManager; parent::__construct($context); } public function execute(){ $post = $this->getRequest()->getPostValue(); $this->inlineTranslation->suspend(); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $customerSession = $objectManager->create('Magento\Customer\Model\Session'); try { $postObject = new \Magento\Framework\DataObject(); $post['myname'] = $customerSession->getCustomer()->getName(); //Loggedin customer Name $post['myemail'] = $customerSession->getCustomer()->getEmail(); //Loggedin customer Email $postObject->setData($post); $myname = $post['myname']; $myemail = $post['myemail']; $sender = [ 'name' => $this->_escaper->escapeHtml($myname), 'email' => $this->_escaper->escapeHtml($myemail), ]; $sentToEmail = $this->scopeConfig->getValue('trans_email/ident_support/email',ScopeInterface::SCOPE_STORE); $sentToname = $this->scopeConfig->getValue('trans_email/ident_support/name',ScopeInterface::SCOPE_STORE); $senderBcc = 'my-test-account@gmail.com'; $senderToInfo = [ 'name' => $this->_escaper->escapeHtml($sentToname), 'email' => $this->_escaper->escapeHtml($sentToEmail), ]; $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE; $transport = $this->_transportBuilder ->setTemplateIdentifier('mymodule_email_template') // My email template ->setTemplateOptions( [ 'area' => \Magento\Framework\App\Area::AREA_FRONTEND, // this is using frontend area to get the template file if admin then \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE 'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID, ]) ->setTemplateVars(['data' => $postObject]) ->setFrom($sender) ->addTo($senderToInfo) ->addBcc($senderBcc) ->getTransport(); $transport->sendMessage(); $this->inlineTranslation->resume(); $this->messageManager->addSuccess(__('Thanks')); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setRefererOrBaseUrl(); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setRefererOrBaseUrl(); return $resultRedirect; } catch (\Exception $e) { $this->inlineTranslation->resume(); $this->messageManager->addError(__('Try again')); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setRefererOrBaseUrl(); return $resultRedirect; } } }
my email_templates.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:Magento:module:Magento_Email:etc/email_templates.xsd"> <template id="myemail_email_template" label="Test email" file="myemail.html" type="html" module="Excellence_Custom" area="frontend"/> </config>
In my var/log/debug.log
[2017-12-27 07:58:53] main.DEBUG: cache_invalidate: {"method":"POST","url":"http://localhost/myshop/admin_1opt4l/admin/index/index/key/695153c2df3affcfdfb5f3af5155de0543f0ae8ed3ff2579d58f854432b1f831/","invalidateInfo":{"tags":["BACKEND_MAINMENU"],"mode":"matchingAnyTag"},"is_exception":false} []
Thanks in advance
Have you upload extension for Gmail Smtp? In your controller i dont find any issue and log is not related to any issue its general purpose message for cache validate.
I have a problem here
I want to install this module but it has been already defined in '/var/www/html/myshop/vendor/magepal/magento2-gmailsmtpapp'.
But in my configuration -> system->advanced I can't find it..
I tried to delete it and save in app/code
I had this error
require(/var/www/html/myshop/vendor/magepal/magento2-gmailsmtpapp/registration.php): failed to open stream: No such file or directory in /var/www/html/myshop/vendor/composer/autoload_real.php on line 60 PHP Fatal error: require(): Failed opening required '/var/www/html/myshop/vendor/magepal/magento2-gmailsmtpapp/registration.php' (include_path='/var/www/html/myshop/vendor/magento/zendframework1/library:/var/www/html/myshop/vendor/phpunit/php-file-iterator:/var/www/html/myshop/vendor/phpunit/phpunit:/var/www/html/myshop/vendor/symfony/yaml:.:/usr/share/php') in /var/www/html/myshop/vendor/composer/autoload_real.php on line 60
You need to create folder like Magepal/GmailSmtpApp in your app/code folder and add all content of extension inside it.
Run upgrade and deploy command and after then you can check it.
To remove a module that is installed in /vendor you have to user composer (ie composer require magepal/magento2-gmailsmtpapp)
Seems like the module files were not uploaded to the correct location.
If you want to have a better understanding of how Magento sends emails, you can check this article.
Hello,
you need to first remove module from app/code
then run below command from your root directory
composer require magepal/magento2-gmailsmtpapp
then do setup upgrade and static content deploy.
If it will work then mark as solution.
You can learn How to send an email from a custom module in Magento 2
See the video steps by step and get the source codes in the Github
I hope it will save your time.