我想使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::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
完成这些更改后,我做了前端测试(即发邮件给朋友)。 被证明成功的消息,但该邮件是不是在邮箱中(甚至在垃圾邮件)。
希望有人能帮助我。 真的很感谢,谢谢!
你不应该攻入核心代码,有很多的原因,因为这是不是一个好主意。 其一是:你是不是能够升级。
而是使用一个扩展或者自己写: http://www.magentocommerce.com/magento-connect/ASchroder/extension/1865/aschroder.com-smtp-pro
我已成功地从本地主机发送忘记密码的电子邮件。
你唯一需要做的就是按照下面列出和你做的步骤。
- 修改此页
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
并设置以下的东西。
禁用电子邮件通信=否
主机= smtp.mandrillapp.com
端口(25)= 587
设置返回路径=否
登录管理System -> Transactional Emails -> Add New Template
请按照下列步骤
登录管理System -> Configuration -> Customers -> Customer Configuration -> Password Options
在Forgot Email Template
选择“忘记密码”(这是在交易电子邮件标签创建)从下拉。
选择Remind Email Template
,以“忘记密码”
选择Forgot and Remind Email Sender
任何下拉的前值-客户支持。
注 - 确保客户支持设置为某些有效的电子邮件地址。 为了修改该客户的支持电子邮件-登录管理System -> Configuration -> General -> Store email Address -> Customer support
添加有效的电子邮件地址。
这是所有做。 请随意张贴您的查询。 欲了解更多信息请参阅本http://pravams.com/2011/07/30/magento-send-email-using-smtp/
Magento的邮件传输设置和来自这两个函数执行
-
Mage_Core_Model_Email_Template -> send()
-
Mage_Newsletter_Model_Template -> send()
下面是我创建通过我们的电子邮件服务提供商直接交易电子邮件,工作模块代码。 它覆盖Mage_Core_Model_Email_Template -> send()
请注意,您将需要硬编码为您的目的,此代码示例额外的配置项缺少安装程序,添加字段,系统配置,但它应该给你的需要如何改变在send()函数的想法使用需要认证,并能提供SSL SMTP服务器/ TLS保护运输。
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;
}