magento此信不能仅针对特定邮件发送
嗨,我在magento中添加邮件。默认邮件系统运行良好。但是我的邮件通过这个错误magento此信不能仅针对特定邮件发送,magento,email,Magento,Email,嗨,我在magento中添加邮件。默认邮件系统运行良好。但是我的邮件通过这个错误 2013-10-08T05:06:17+00:00 ERR (3): exception 'Exception' with message 'This letter cannot be sent.' in /home/domain/public_html/fashion/app/code/core/Mage/Core/Model/Email/Template.php:398 Stack trace: #0 /ho
2013-10-08T05:06:17+00:00 ERR (3):
exception 'Exception' with message 'This letter cannot be sent.' in /home/domain/public_html/fashion/app/code/core/Mage/Core/Model/Email/Template.php:398
Stack trace:
#0 /home/mall140/public_html/fashion/app/code/local/seller/Marketplaceseller/controllers/SendmailController.php(18): Mage_Core_Model_Email_Template->send('amia.1901@...', 'victor', Array)
#1 /home/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Webkul_Marketplacepartner_SendmailController->indexAction()
#2 /home/fashion/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#3 /home/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#4 /home/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#5 /home/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#6 /home/index.php(87): Mage::run('', 'store')
这是错误代码。请帮助我此异常表示
Mage\u Core\u Model\u Email\u Template::isValidForSend()
返回false
:
public function isValidForSend()
{
return !Mage::getStoreConfigFlag('system/smtp/disable')
&& $this->getSenderName()
&& $this->getSenderEmail()
&& $this->getTemplateSubject();
}
如果在发送之前没有看到设置电子邮件模板的代码,很难说这四个条件中哪一个失败
我的猜测是SMTP邮件在您的后端被禁用
检查
System->Configuration->System->Mail sending settings->Disable Email Communications
是否设置为“No”。调用sendTransactional()
函数时,我也遇到了同样的错误。我认为主题中的电子邮件模板存在一些问题。为了找到Jurgen Thalen在回答中提到的确切问题,我检查了Mage\u Core\u Model\u Email\u Template::isValidForSend()
如下函数
public function isValidForSend()
{
//remove this after checking, never change core files
Mage::log("Sender Name:".$this->getSenderName());
Mage::log("Sender email:".$this->getSenderEmail());
Mage::log("Template subject:".$this->getTemplateSubject());
Mage::log("Email disabled:".Mage::getStoreConfigFlag('system/smtp/disable'));
return !Mage::getStoreConfigFlag('system/smtp/disable')
&& $this->getSenderName()
&& $this->getSenderEmail()
&& $this->getTemplateSubject();
}
现在检查您的系统。为我记录模板主题正常,但发件人姓名和发件人电子邮件不正常
下面是我的代码:
sendTransactional(
$template,
"myemail@gmail.com",
$recipient['email'],
$recipient['name'],
array(
'myvar1' => $myvar1,
'myvar2' => $myvar2,
'myvar3' =>$myvar3,
'myvar4' =>$myvar4
)
)
下面是核心文件中的发送事务功能:
/**
* Send transactional email to recipient
*
* @param int $templateId
* @param string|array $sender sneder informatio, can be declared as part of config path
* @param string $email recipient email
* @param string $name recipient name
* @param array $vars varianles which can be used in template
* @param int|null $storeId
* @return Mage_Core_Model_Email_Template
*/
public function sendTransactional($templateId, $sender, $email, $name, $vars=array(), $storeId=null)
正如您所看到的,第二个参数$sender应该是String或array,因为我传递了String,但没有接受它
我更改了我的sendTransactional()
如下:第二个参数作为数组传递
sendTransactional(
$template,
array(
'email' => "myemail@gmail.com",
'name' => "satish sojitra",
),
$recipient['email'],
$recipient['name'],
array(
'myvar1' => $myvar1,
'myvar2' => $myvar2,
'myvar3' =>$myvar3,
'myvar4' =>$myvar4
)
)
它很有魅力!不要忘记从核心文件中删除Mage::log
语句
下面是发送事务性电子邮件的完整代码段
$translate = Mage::getSingleton('core/translate');
//@var $translate Mage_Core_Model_Translate
$translate->setTranslateInline(false);
$mailTemplate = Mage::getModel('core/email_template');
//add bcc
$mailTemplate->addBcc("bccemail@gmail.com");//accept array also
//add cc: $Cc_email_ids can be array or string
$mailTemplate->getMail()->addCc($Cc_email_ids);//accept array also
/* @var $mailTemplate Mage_Core_Model_Email_Template */
//template path
$templateConfigPath = "configuration/product_settings/failure_template";
$template = Mage::getStoreConfig($templateConfigPath, Mage::app()->getStore()->getId());
$to = array(
array("email"=> "to_1@gmail.com","name"=>"to_name"),
array("email"=> "to_2@gmail.com","name"=>"to_name")
);
$sendTo = array();
foreach ($to as $recipient)
{
if (is_array($recipient))
{
$sendTo[] = $recipient;
}
else
{
$sendTo[] = array(
'email' => $recipient,
'name' => null,
);
}
}
$myvar1 = 0;
$myvar2 = 0;
$myvar3 = 0;
$myvar4 = "transactional email testing";
foreach ($sendTo as $recipient) {
$mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>Mage::app()->getStore()->getId()))
->sendTransactional(
$template,
array(
'email' => "myemail@gmail.com",
'name' => "satish sojitra",
),
$recipient['email'],
$recipient['name'],
array(
'myvar1' => $myvar1,
'myvar2' => $myvar2,
'myvar3' =>$myvar3,
'myvar4' =>$myvar4
)
);
}
$translate->setTranslateInline(true);
我希望这将有助于某人。如果您的代码如下所示
$emailTemplate->sendTransactional($emailTemplateId, $sender, $emailAddress, $name, $data, $store);
Mage_Core_Model_Email_Template::isValidForSend()返回false。那么最有可能的是,您传递的发件人信息不正确
检查app\code\core\Mage\core\Model\Email\Template.php
将发送方数据作为数组传递
$sender = array(
'name' => $fromEmail,
'email' => $fromName
);
$emailTemplate->sendTransactional($emailTemplateId, $sender, $emailAddress, $fullName, $data, $store);
然后检查它是否有效。你能分享你的电子邮件代码吗?编辑你的问题以添加Webkul\u Marketplacepartner\u SendmailController::indexAction()
的代码我也有这个问题,我没有发件人电子邮件,但是Magento日志错误很模糊,它应该告诉我无法发送电子邮件,因为发件人电子邮件丢失了。
$sender = array(
'name' => $fromEmail,
'email' => $fromName
);
$emailTemplate->sendTransactional($emailTemplateId, $sender, $emailAddress, $fullName, $data, $store);