我最近创建并托管了一个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发送了一个错误。已向该网站发送电子邮件
我该如何解决这个问题?
答案 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