2014-10-07 2 views
3

wordpress에서 제공하는 기본 SMTP 서버 설정을 덮어 쓰고 메일을 보내려는 플러그인의 여러 위치에서 동일한 SMTP 설정을 사용해야합니다. Wordpress Plugin 개발 : 기본 SMTP 무시

새로운 SMTP 서버 세부

이 가능한 솔루션을 그것에 대해 인터넷 검색, 내가 phpMailer 건너 온 반면 WP - 관리자

에 양식을 통해, 사용자가 제공하고 class-smtp.php

될 것이라고 나는 수 생각해
1. phpmailer 클래스에 대한 전역 개체를 만들고 플러그인 전체에 사용하십시오.
2. 기본 wordpress SMTP 서버 설정을 무시하십시오.
3. 사용자가 데이터베이스에 입력 한 설정을 저장하고 메일을 보내야 할 때마다 PHPmailer 객체를 생성하면서 검색하십시오.

나는 위의 솔루션을 직면하고 문제이다

..

1 솔루션. 나는 그것을 달성하는 방법을 알아낼 수 없습니다.
두 번째 해결 방법 : 기본 smtp 설정을 재정의하는 방법을 설명 할 수있는 WordPress 코덱스의 리소스를 찾을 수 없습니다.
세 번째 해결 방법 : 충분히 생산적이지 않습니다.

또한 독립 실행 형 플러그인을 만들려고하고 있으므로 제 3 자 플러그인에 종속성을 만들 수 없습니다. 소스 코드 wp-smtp을 시도했지만 여러 장소에서 동일한 설정을 사용하는 방법을 알 수 없었습니다.

나는 Tomoy Mcfarlin의 Wordpress Boilerplate Plugin (link)을 사용하여 표준 플러그인 파일 구조를 만들었으므로 누군가가 나를 상용구를 사용하여 솔루션을 설명 할 수 있다면 정말 유용하고 효율적일 것입니다.

편집 :
더 나은 이해를 위해 파일 구조를 업로드하고 있습니다.


enter image description here
enter image description here

내가 클래스의 전역 변수를 만들 필요가 양식 값이 성공적으로 클래스 ATF-admin.php에서 검색되는 enter image description here

형태입니다 -atf-admin.php에서 폼으로부터받은 값을 설정하고 위의 그림에 표시된 파일에서 사용합니다.

+0

왜 Wordpress의 SMTP 설정을 변경할 수 없습니까? – Synchro

+0

내 플러그인을 통해 wordpress SMTP 설정을 변경하고 싶다면, 저를 도울 수 있다면 도움이 될 것입니다. wordpress codex에서 리소스를 찾을 수 없습니다. – anurag

답변

2

Mkay, 나는 변수의 this example code

<?php  
require_once 'phpmailer/PHPMailerAutoload.php'; 

$mail    = new PHPMailer(); 

$body    = file_get_contents('contents.html'); 

$mail->IsSMTP(); // telling the class to use SMTP 
$mail->Host  = "mail.yourdomain.com"; // SMTP server 
$mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 
              // 1 = errors and messages 
              // 2 = messages only 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->Host  = "mail.yourdomain.com"; // sets the SMTP server 
$mail->Port  = 26;     // set the SMTP port for the GMAIL server 
$mail->Username = "[email protected]"; // SMTP account username 
$mail->Password = "yourpassword";  // SMTP account password 

$mail->SetFrom('[email protected]', 'First Last'); 

$mail->AddReplyTo("[email protected]","First Last"); 

$mail->Subject = "PHPMailer Test Subject via smtp, basic with authentication"; 

$mail->MsgHTML($body); 

$address = "[email protected]"; 
$mail->AddAddress($address, "John Doe"); 

$mail->AddAttachment("images/phpmailer.gif");  // attachment 
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 
} 

을 바탕으로, 주요 플러그인 파일에서 옵션 1 (비록 phpmailer 명명에 대한 100 %)

에 균열을해야 할 것입니다 사용자 측에서 shortcode에 위의 내용을 추가하고 shortcode를 통해 smtp 세부 정보를 삽입하십시오.예 :

[sendMail host="mail.yourdomain.com" port="26" username="[email protected]" password="yourpassword"]

+0

오래된 문서로 링크하지 마십시오. 현재 위치를 가리 키도록 링크를 수정했으며 코드를 조금 업데이트했습니다. – Synchro