电子邮件没有在Joomla中与VM组合发送

时间:2014-10-06 14:01:10

标签: php email joomla

我是新来的,所以请耐心等待。我对代码很苛刻,我主要是一个webdesigner,而不是开发人员。但我自己的网络开发人员正在努力解决这个问题,所以我试图找到一些帮助。 所以,我们在Virtuemart商店遇到了这个问题,运行Joomla的2.5.23版本和VM 2.6.10。

服务器信息:

  • PHP构建于Linux web04 3.13.0-35-generic#62~minision1-Ubuntu
  • 数据库版本: 5.1.73-0ubuntu0.10.04.1-log
  • 数据库整理: utf8_general_ci
  • PHP版本: 5.3.10-1ubuntu3.14
  • Web服务器: Apache
  • WebServer到PHP界面: apache2handler
  • 的Joomla!版本: Joomla! 2.5.23稳定[Ember] 2014年7月24日14:00 GMT

所以这不是在任何地方发送邮件。我们在测试服务器上得到它,在那里,生活很美好。它正在发送电子邮件。测试服务器运行PHP 5.24。

我已经用它来看看这是否结束了:

<?php

$to = "dontsentmemail@gmail.com";
if( mail( $to , 'This is a test message.' , 'Is this working?' ) ) {
    echo 'Email sent.';
} else {
    echo 'Email failed to send.';
}

?>

这很好用。而且我要拔掉我所有的头发。我们已经尝试过SMTP邮件处理,并再次像测试服务器上的魅力一样工作,但它不会在实时网站上工作。

有人知道VM / joomla是直接使用mail()还是使用JUtility :: sendMail()作为默认值,如果我们可以更改它,使它工作?有人有任何想法吗?

2 个答案:

答案 0 :(得分:1)

修改

我不知道Joomla已经包含了自己的PHPMailer版本。请参阅Lodder的答案,以获得更好的开箱即用解决方案!


尝试切换到专家邮件库,例如PHPMailer发送邮件,而不是php的邮件功能。

我也有类似的问题,已发送但尚未发送的电子邮件,也没有退回邮件。 PHPMailer设法发送了已经发送的电子邮件。

<?php
require_once('path/to/PHPMailerAutoload.php');

//Create a new PHPMailer instance
$mail = new PHPMailer();

// Set PHPMailer to use the sendmail transport
$mail->isSendmail();

// Set who the message is to be sent from
// Name is optional
$mail->setFrom('somebody@yourdomain.com', 'Joe Bloggs');

//Set who the message is to be sent to
// Name is optional
$mail->addAddress('dontsentmemail@gmail.com', 'Jane Bliggs');

//Set the subject line
$mail->Subject = 'Is this working?';

// Set plain text body
$mail->IsHTML(false);
$mail->Body = 'This is a test message.';

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

答案 1 :(得分:1)

我个人会使用Joomla的内置JMail类,它使用 PHPMailer 。看看以下内容:

$mailer = JFactory::getMailer();

$mailer->setSender('dontsentmemail@gmail.com');
$mailer->addRecipient('from@emailaddress.com');
$mailer->setSubject('Your subject');

$body = "Some email text";
$mailer->setBody($body);

$send = $mailer->Send();
if ( $send !== true ) 
{
    echo 'Error sending email';
} 
else 
{
    echo 'Mail sent';
}

您可能希望将from@emailaddress.com更改为适合您需求的内容。此类还有一些其他功能,可以在Joomla文档中找到:

http://docs.joomla.org/Sending_email_from_extensions

更新

我不知道您使用的是单独的PHP文件。在PHP文件的顶部,您需要像这样导入Joomla框架:

define( '_JEXEC', 1 );
define('JPATH_BASE', __DIR__);
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

$app = JFactory::getApplication('site');

您可能需要更改JPATH_BASE的值,以便脚本指向Joomla网站的根目录,相对于PHP文件所在的位置。

希望这有帮助