2013-03-21 3 views
2

Joomla 2.5.8 웹 사이트를 실행하면 모든 서버 생성 이메일이 스팸 메일로 표시됩니다 (Gmail 만 해당!). Joomla 메일은 스팸 폴더로 이동합니다 : HTML 이메일을 보낼 때 텍스트/일반을 추가하는 방법은 무엇입니까?

나는 위대한 자원 http://www.mail-tester.com 내가지고있어 부정적인 점수에 시험한다 (어쌔신 테스트) 실행 :

-1.105  MIME_HTML_ONLY  Message only has text/html MIME parts 
You should also include a text version of your message (text/plain) 

내가 코드에 파고 발견을 라이브러리/줌라/메일/메일 그 .php는 텍스트에 해당하는 AltBody를 설정하지 않습니다. 나는 시도했다 :

public function setBody($content) 
{ 
    [...] 
    if (empty($this->AltBody)) 
     $this->AltBody =JMailHelper::cleanText(strip_tags($content)); 

그리고 그것은 작동한다! (메일 테스터의 10/10). 그러나 확실히 추한 것입니다.

내 질문은 :

  • 우리가이 줌라을 고려해야합니다! 버그와 그것을 파일?
  • 코어 파일을 해킹하지 않고도 깨끗한 솔루션을 제공합니까? 나는 재정을 수행하는 플러그인을 쓸 것이다 그렇지

는 '이 우리가 Gmail을! 스팸 폴더를 찾을 수 없습니다 고객의 20 %를 잃고 으로 매우 중요하며, 나는 돈 정말 코어 해킹 사이트 30 개를 느끼는군요.

+0

필자는 파일을 작성해야하며 가능한 경우 패치를 작성해야한다고 생각합니다. –

답변

4

확실히 CMS에 제기 할 수있는 버그입니다. 시스템에서 처리해야합니다. 버그 접수를 시작하는 방법은 다음과 같습니다. https://github.com/joomla/joomla-cms/blob/master/CONTRIBUTING.md

또한 코어 파일을 해킹하지 않고 대신 자신의 재정의를 처리 할 수있는 플러그인을 작성할 수 있습니다. 여기에서 필요한 경우 핵심 클래스를 재정의 할 수있는 기본 플러그인을 작성했습니다. https://gist.github.com/dongilbert/3237387

볼 수 있듯이 아무 것도 복잡하지 않습니다. 먼저 Joomla에 있는지 확인하십시오. 그렇지 않으면 종료됩니다. 그런 다음 Joomla 명명 규칙에 따라 클래스를 정의하고 클래스 구성에 config 파일을 포함시킵니다. 구성 파일은 클래스가 자동 로더에 등록되는 위치입니다.

구성 파일에서 OVERRIDES 경로를 정의한 다음 클래스를 JLoader에 등록하기 시작합니다. 내가 정리하는 것을 좋아합니다. 따라서 재정의 디렉토리는 루트 joomla 디렉토리의 구조를 미러링합니다.이 디렉토리는 내가 오버라이드하려는 클래스의 경로 만 포함합니다.

overrides/libraries/joomla/form/field.php

그리고 config.php에 내가 추가 할 :

JLoader::register('JFormField', OVERRIDES.'/libraries/joomla/form/field.php', true);

또한 사용할 수 있습니다 내가 JFormField를 오버라이드 (override) 할 경우, 내가 (오버라이드 (override) 디렉토리 포함)과 같은 구조를 가지고 것입니다 의미 이것은 핵심 컴포넌트 클래스를 오버라이드 (override)한다. 이 같은 com_media에서 뷰 클래스 재정의를 사용 :

overrides/component/com_media/view/imageslist/view.html.php

및 다음 물론 설정이 추가 :

JLoader::register('MediaViewImagesList', OVERRIDES.'/components/com_media/view/imageslist/view.html.php', true);

당신은 위의 요점 링크에서 플러그인을 다운로드 할 수 있습니다. Joomla 사이트에 설치할 준비가되었습니다. 먼저 업로드 한 다음 플러그인 디렉토리에 재정의 디렉토리를 추가하십시오. 모든 파일을 먼저 추가하고 업로드하려면, 다음을 overrides.xml 파일에 추가하십시오.

<folder>overrides</folder>

2

감사합니다. 나는 어쨌든 나는 소스를 편집하는 간단한

$mailer = JFactory::getMailer(); 
(...) 
$mailer->setBody($messagebody); 
$mailer->AltBody =JMailHelper::cleanText(strip_tags($messagebody)); 

필요없이 그것을 해결 않으며, 나는이가 (하나 할 수 있어야 버그로보고해야한다고 생각 3.

줌라에서 같은 문제를 발견 AltBody를 적합하게 설정하십시오.) - 제대로 문서화되도록하거나, setAltBody() 메소드를 사용하는 것이 좋을 것입니다.