Magento-如何启用SMTP服务器身份验证和安全传输?
我想让SMTP服务器在Magento应用程序(1.7版)上运行。因此,我在文件Magento-如何启用SMTP服务器身份验证和安全传输?,magento,email,smtp,Magento,Email,Smtp,我想让SMTP服务器在Magento应用程序(1.7版)上运行。因此,我在文件app/code/core/Mage/core/Model/Email/Template.php public function getMail() { if (is_null($this->_mail)) { /*Start of added code to specify config*/ $my_smtp_host = Mage::g
app/code/core/Mage/core/Model/Email/Template.php
public function getMail()
{
if (is_null($this->_mail)) {
/*Start of added code to specify config*/
$my_smtp_host = Mage::getStoreConfig('system/smtp/host');
$my_smtp_port = Mage::getStoreConfig('system/smtp/port');
$config = array(
'ssl' => 'tls',
'port' => $my_smtp_port,
'auth' => 'login',
'username' => 'account@gmail.com',
'password' => 'secret'
);
$transport = new Zend_Mail_Transport_Smtp($my_smtp_host, $config);
Zend_Mail::setDefaultTransport($transport);
/*End of added code to specify config*/
$this->_mail = new Zend_Mail('utf-8');
}
return $this->_mail;
}
然后在管理面板->系统->配置->高级->系统->邮件发送设置上
已添加以下设置
- 主机:smtp.gmail.com
- 港口(25):587
希望有人能帮助我。非常感谢,谢谢 你不应该侵入核心代码,原因有很多,因为这不是一个好主意。一个是:你无法升级 而是使用扩展名或编写自己的扩展名:
Magento邮件传输是通过这两个功能设置和执行的
Mage\u Core\u Model\u Email\u Template->send()
Mage\u时事通讯\u Model\u模板->发送()
Mage\u Core\u Model\u Email\u Template->send()
请注意,由于此代码示例缺少将字段添加到系统配置的设置,因此您需要对额外的配置项进行硬编码,但它应该让您了解如何更改send()函数,以便使用需要身份验证并可提供SSL/TLS安全传输的SMTP服务器
public function send($email, $name = null, array $variables = array())
{
if (!$this->isValidForSend()) {
Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted
return false;
}
/* Set up mail transport to Email Hosting Provider SMTP Server via SSL/TLS */
$config = array(
'ssl' => Mage::getStoreConfig('system/smtp/ssl'), // option of none, ssl or tls
'port' => Mage::getStoreConfig('system/smtp/port'), // TLS 587 - SSL 465 - default 25
'auth' => Mage::getStoreConfig('system/smtp/auth'), // Auth type none, login, plain, CRAM-MD5
'username' => Mage::getStoreConfig('system/smtp/username'),
'password' => Mage::getStoreConfig('system/smtp/password')
);
/* Set up transport package to host */
$transport = new Zend_Mail_Transport_Smtp(Mage::getStoreConfig('system/smtp/host'), $config);
/* End transport setup */
$emails = array_values((array)$email);
$names = is_array($name) ? $name : (array)$name;
$names = array_values($names);
foreach ($emails as $key => $email) {
if (!isset($names[$key])) {
$names[$key] = substr($email, 0, strpos($email, '@'));
}
}
$variables['email'] = reset($emails);
$variables['name'] = reset($names);
// ini_set('SMTP', Mage::getStoreConfig('system/smtp/host'));
// ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
$mail = $this->getMail();
$setReturnPath = Mage::getStoreConfig(self::XML_PATH_SENDING_SET_RETURN_PATH);
switch ($setReturnPath) {
case 1:
$returnPathEmail = $this->getSenderEmail();
break;
case 2:
$returnPathEmail = Mage::getStoreConfig(self::XML_PATH_SENDING_RETURN_PATH_EMAIL);
break;
default:
$returnPathEmail = null;
break;
}
if ($returnPathEmail !== null) {
$mailTransport = new Zend_Mail_Transport_Sendmail("-f".$returnPathEmail);
Zend_Mail::setDefaultTransport($mailTransport);
}
foreach ($emails as $key => $email) {
$mail->addTo($email, '=?utf-8?B?' . base64_encode($names[$key]) . '?=');
}
$this->setUseAbsoluteLinks(true);
$text = $this->getProcessedTemplate($variables, true);
if($this->isPlain()) {
$mail->setBodyText($text);
} else {
$mail->setBodyHTML($text);
}
$mail->setSubject('=?utf-8?B?' . base64_encode($this->getProcessedTemplateSubject($variables)) . '?=');
$mail->setFrom($this->getSenderEmail(), $this->getSenderName());
try {
/* Send Transport, empty and log success */
$mail->send($transport); //transport object
$this->_mail = null;
Mage::log('Mailed to: ' . $this->getSenderEmail() . ' ' . $this->getSenderName() . ' ' .$this->getProcessedTemplateSubject($variables), null, 'email.log');
/* End */
}
catch (Exception $e) {
/* Or empty and log failure */
$this->_mail = null;
Mage::log('Failure: ' . $e, null, 'email.log');
Mage::logException($e);
return false;
/* End */
}
return true;
}
我已设法从localhost发送忘记密码的电子邮件 你唯一需要做的就是按照下面列出的步骤完成你的任务
app/code/core/Mage/core/Model/Email/Template.php
public function getMail()
{
if (is_null($this->_mail)) {
/* changes begin */
$my_smtp_host = Mage::getStoreConfig('system/smtp/host');
$my_smtp_port = Mage::getStoreConfig('system/smtp/port');
$config = array(
'port' => $my_smtp_port,
'auth' => 'login',
'username' => 'your username',
'password' => 'your password'
);
$transport = new Zend_Mail_Transport_Smtp($my_smtp_host, $config);
Zend_Mail::setDefaultTransport($transport);
/* Changes End */
$this->_mail = new Zend_Mail('utf-8');
}
return $this->_mail;
}
System->Configuration->Advanced->System->Mail Sending settings
并设置以下内容
禁用电子邮件通信=否
Host=smtp.mandrillapp.com
端口(25)=587
设置返回路径=否系统->事务性电子邮件->添加新模板
按照以下步骤操作
- 在加载默认模板-选择所需的模板,如
,然后单击“忘记密码”
将在模板内容中填充默认模板加载模板
- 在模板信息中-提供任何模板名称,如
,然后单击保存模板忘记密码
系统->配置->客户->客户配置->密码选项
- 在
选择“忘记的密码”(该密码是在中创建的) 从下拉列表中选择“事务性电子邮件”选项卡)忘记的电子邮件模板中
- 选择
“忘记密码”提醒电子邮件模板
- 选择“忘记”并将电子邮件发件人提醒到ex的任何下拉值- 客户支持
System->Configuration->General->Store email Address->customer support
添加有效的电子邮件地址
你的事都做完了。请随时发布您的疑问。
有关更多信息,请参阅此您尝试过吗?如果是,您必须实现自己的模块。也许可以在Twitter上联系@aschroeder并请求更新。如果您需要帮助,请与我联系:stackoverflow@fabian-布莱希米特。de@DHC抱歉,我把你的评论写得太多了。费边,你知道这个扩展是否在github上吗?我想快速浏览一些代码,而不必通过magento connect下载整个内容?Lazy:)不知道,我通过Twitter问他,他会在这里发布答案,但你可以通过pear下载,不知怎么的,aschroder知道答案,一个可怕的家伙:)或者你使用这个工具:我需要1.7.0的扩展:(你在本地主机上测试过吗?如果是真的,那么没有什么奇怪的,电子邮件被转到了垃圾邮件文件夹被覆盖的错误函数,
Mage\u Core\u Model\u email\u Template->send()
是需要用您的模块代码覆盖的内容。在最新版本的Magento中找不到app/code/core/Mage/core/Model/Email/Template.php文件,但其余过程正常