如何从我的joomla网站发送电子邮件

时间:2015-04-22 05:58:54

标签: email joomla smtp gmail

我最近创建并托管了一个joomla网站,


您可能知道访问者何时尝试登录您的网站,正常程序是他会收到一封确认其帐户的电子邮件。

我找了一种使用gmail帐户的方法,我发现我必须像这样配置我的joomla网站:

梅勒:SMTP。

来自电子邮箱:anything@gmail.com

来自名称:管理员

Sendmail路径:/ usr / sbin / sendmail

SMTP身份验证:是

SMTP安全:SSL

SMTP端口:465

SMTP用户名:aValidEmail@gmail.com

SMTP密码:**********

SMTP主机:smtp.gmail.com

在尝试注册时,我一直收到此错误消息:

这个anything@gmail.com发送了一个错误。已向该网站发送电子邮件

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

某些服务器不会将服务直接发送到gmail帐户。所以首先将此电子邮件发送到您服务器的网络邮件,然后将其转发给gmail帐户..我已经完成并成功了

答案 1 :(得分:0)

获取邮件对象

通过JFactory对象获取对全局邮件对象(JMail)的引用。这是创建邮件的对象。

$mailer = JFactory::getMailer();

设置发件人

电子邮件的发件人使用setSender设置。该函数采用带有电子邮件地址和名称作为参数的数组。我们从全局配置中获取网站的电子邮件地址和名称。这些是在管理后端(全局配置 - >服务器 - >邮件设置)中设置的。

$config = JFactory::getConfig();
$sender = array( 
    $config->get( 'mailfrom' ),
    $config->get( 'fromname' ) 
);

$mailer->setSender($sender);

在3.1中,$ config-> getValue()应更改为$ config-> get() 收件人

使用addRecipient功能设置电子邮件的收件人。要将电子邮件地址设置为当前登录的用户,我们从用户对象中获取它。

$user = JFactory::getUser();
$recipient = $user->email;

$mailer->addRecipient($recipient);

如果我们有多个收件人,我们会将每个收件人的电子邮件地址放在一个数组中。

$recipient = array( 'person1@domain.com', 'person2@domain.com', 'person3@domain.com' );

$mailer->addRecipient($recipient);

创建邮件

我们需要设置主题行并创建文本正文。主题使用setSubject设置。

创建电子邮件正文的简便方法是使用纯文本字符串。使用函数setBody将消息添加到邮件正文。您还可以使用addAttachment附加文件。它需要一个文件名或一个文件名数组作为参数。

$body   = "Your body string\nin double quotes if you want to parse the \nnewlines etc";
$mailer->setSubject('Your subject string');
$mailer->setBody($body);
// Optional file attached
$mailer->addAttachment(JPATH_COMPONENT.'/assets/document.pdf');

如果您希望使用HTML格式化电子邮件,则需要告知邮件程序它是HTML。这是通过IsHTML完成的。发送HTML电子邮件时,通常应将编码设置为base64,以避免输出中出现不需要的字符。主题行和任何附件按上述方式处理,但HTML中嵌入的图像除外。使用AddEmbeddedImage函数处理这些。

$body   = '<h2>Our mail</h2>'
. '<div>A message to our dear readers'
. '<img src="cid:logo_id" alt="logo"/></div>';
$mailer->isHTML(true);
$mailer->Encoding = 'base64';
$mailer->setBody($body);
// Optionally add embedded image
$mailer->AddEmbeddedImage( JPATH_COMPONENT.'/assets/logo128.jpg', 'logo_id', 'logo.jpg', 'base64', 'image/jpeg' );

通常,您会在服务器上留下任何图像并使用普通的HTML图像标记引用它们,以减少邮件的大小和发送邮件的时间。 发送邮件

邮件与Send函数一起发送。它在成功或JError对象时返回true。

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

如果发送邮件时出错,您可能想要编写自己的错误处理程序。

JMail对象用于在Joomla的联系人管理器中发送邮件。请参阅文件joomla / components / com_contact / controller.php