簡體   English   中英

在joomla電子郵件中添加html輸出

[英]add html ouput in joomla email

我試圖在joomla發送的電子郵件的輸出上設置html。 我的文件位於joomla核心中。 我知道我必須添加-> isHTML(true); 但我不知道在哪里和如何。 這是代碼:

class MailtoController extends JControllerLegacy
{
/**
 * Show the form so that the user can send the link to someone.
 *
 * @return  void
 *
 * @since 1.5
 */
public function mailto()
{
    $session = JFactory::getSession();
    $session->set('com_mailto.formtime', time());
    $this->input->set('view', 'mailto');
    $this->display();

}


public function send()
{
    // Check for request forgeries
    JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

    $app     = JFactory::getApplication();
    $session = JFactory::getSession();
    $timeout = $session->get('com_mailto.formtime', 0);

    if ($timeout == 0 || time() - $timeout < 1)
    {
        JError::raiseNotice(500, JText::_('COM_MAILTO_EMAIL_NOT_SENT'));

        return $this->mailto();
    }

    $SiteName = $app->get('sitename');
    $link     = MailtoHelper::validateHash($this->input->get('link', '', 'post'));

    // Verify that this is a local link
    if (!$link || !JUri::isInternal($link))
    {
        // Non-local url...
        JError::raiseNotice(500, JText::_('COM_MAILTO_EMAIL_NOT_SENT'));

        return $this->mailto();
    }

    // An array of email headers we do not want to allow as input
    $headers = array (
        'Content-Type:',
        'MIME-Version:',
        'Content-Transfer-Encoding:',
        'bcc:',
        'cc:'
    );

    // An array of the input fields to scan for injected headers
    $fields = array(
        'mailto',
        'sender',
        'from',
        'subject',
    );

    /*
     * Here is the meat and potatoes of the header injection test.  We
     * iterate over the array of form input and check for header strings.
     * If we find one, send an unauthorized header and die.
     */
    foreach ($fields as $field)
    {
        foreach ($headers as $header)
        {
            if (strpos($_POST[$field], $header) !== false)
            {
                JError::raiseError(403, '');
            }
        }
    }

    /*
     * Free up memory
     */
    unset ($headers, $fields);

    $email           = $this->input->post->getString('mailto', '');
    $sender          = $this->input->post->getString('sender', '');
    $from            = $this->input->post->getString('from', '');
    $subject_default = JText::sprintf('COM_MAILTO_SENT_BY', $sender);
    $subject         = $this->input->post->getString('subject', $subject_default);

    // Check for a valid to address
    $error = false;

    if (!$email || !JMailHelper::isEmailAddress($email))
    {
        $error = JText::sprintf('COM_MAILTO_EMAIL_INVALID', $email);
        JError::raiseWarning(0, $error);
    }

    // Check for a valid from address
    if (!$from || !JMailHelper::isEmailAddress($from))
    {
        $error = JText::sprintf('COM_MAILTO_EMAIL_INVALID', $from);
        JError::raiseWarning(0, $error);
    }

    if ($error)
    {
        return $this->mailto();
    }

    // Build the message to send
    $msg  = JText::_('COM_MAILTO_EMAIL_MSG');
    $link = $link;
    //$body = sprintf($msg, $SiteName, $sender, $from, $link);
    $body = "<p>Hello Test F,</p><br/><p>Thank you for registering at Deals&offers. Your account is created and activated.</p><br/>You may login to ".$SiteName." using the following username and password:</br><p>Username: ".$sender."</p><p>Password: ".$from."/p><br/><p><b>Note:</b> It is recomended to change your password after first login. ".$link."</p>";

    // Clean the email data
    $subject = JMailHelper::cleanSubject($subject);
    $body    = JMailHelper::cleanBody($body);

    // To send we need to use punycode.
    $from  = JStringPunycode::emailToPunycode($from);
    $from  = JMailHelper::cleanAddress($from);
    $email = JStringPunycode::emailToPunycode($email);

    // Send the email
    if (JFactory::getMailer()->sendMail($from, $sender, $email, $subject, $body) !== true)
    {
        JError::raiseNotice(500, JText::_('COM_MAILTO_EMAIL_NOT_SENT'));

        return $this->mailto();
    }

    JFactory::getApplication()->enqueueMessage('ok!', '');
    $this->input->set('view', 'sent');
    $this->display();
}
}

非常感謝你

您可以在正文之前或在主題和正文之間添加。 但是,必須在提交命令之前!! 這是PhpMailler的一個例子,首先需要調用這樣的類,然后才能使用它

  $this->mail= new PHPMailer();
          $this->mail->IsSMTP(); 

$this->mailIsHTML(true);
$subject = JMailHelper::cleanSubject($subject);
$body    = JMailHelper::cleanBody($body);

但是,如果該函數是靜態的,那么您也可以在同一類中調用該函數,則可以通過sef命令調用該函數

self::mailIsHTML(true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM