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

Email 如何从我的joomla网站发送电子邮件,email,joomla,smtp,gmail,Email,Joomla,Smtp,Gmail,我最近创建并主持了一个joomla网站 您可能知道,当访问者试图登录您的网站时,正常的程序是他将收到一封电子邮件以确认其帐户 我想通过gmail帐户实现这一点,我发现我必须像这样配置joomla网站: 邮递员:SMTP 通过电子邮件:anything@gmail.com 发件人姓名:管理员 发送邮件路径:/usr/sbin/Sendmail SMTP身份验证:是 SMTP安全性:SSL SMTP端口:465 SMTP用户名:aValidEmail@gmail.com SMTP密码:*******

我最近创建并主持了一个joomla网站

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

我想通过gmail帐户实现这一点,我发现我必须像这样配置joomla网站:

邮递员:SMTP

通过电子邮件:anything@gmail.com

发件人姓名:管理员

发送邮件路径:/usr/sbin/Sendmail

SMTP身份验证:是

SMTP安全性:SSL

SMTP端口:465

SMTP用户名:aValidEmail@gmail.com

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

SMTP主机:SMTP.gmail.com

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

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


我怎样才能解决这个问题

某些服务器不提供直接向gmail帐户发送电子邮件的服务。因此,请先将此电子邮件发送到服务器的web邮件,然后将其转发器设置为gmail帐户。我已完成此操作并成功获取邮件对象

通过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对象获取它

$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' );
如果发送邮件时出错,您可能希望编写自己的错误处理程序

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

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