首页 文章

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

提问于
浏览
1

我最近创建并托管了一个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

    有些服务器没有给服务直接发送电子邮件到gmail帐户..所以首先将这封邮件发送到你服务器的网络邮件然后将它的转发器设置为gmail帐户..我已经做到了并成功了

  • 0

    Fetch the Mail Object

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

    $mailer = JFactory::getMailer();
    

    Set a Sender

    电子邮件的发件人使用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);
    

    Create the Mail

    我们需要设置主题行并创建文本正文 . 主题使用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

相关问题