2014-06-21 4 views
1

phpmailer()를 사용하여 smtp 서버로 gmail을 사용하고 있습니다.phpmailer를 사용하는 대체 smtp 서버

$mail->Host= "ssl://smtp.gmail.com" 

Gmail에 대한 연결이 실패한 경우 별도의 smtp 서버를 백업으로 지정하려면 어떻게해야합니까? http://www.web-development-blog.com/archives/send-e-mail-messages-via-smtp-with-phpmailer-and-gmail/

그리고 섹션으로 이동 : Advanced setup with fall-back SMTP server

먼저 백업 이메일 서비스에 대한 변수를 추가, 뭔가 같은 :

define('SMTPUSER', '[email protected]'); // sec. smtp username 
define('SMTPPWD', 'password'); // sec. password 
define('SMTPSERVER', 'smtp.yoursmtp.com'); // sec. smtp server 

그리고 우리가 메일을 수정이 튜토리얼

답변

0

체크 아웃 우리의 백업 계획을 통합하는 기능을 보내십시오.

function smtpmailer($to, $from, $from_name, $subject, $body, $is_gmail = true) { 
    global $error; 
    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 
    $mail->SMTPAuth = true; 
    if ($is_gmail) { 
     $mail->SMTPSecure = 'ssl'; 
     $mail->Host = 'smtp.gmail.com'; 
     $mail->Port = 465; 
     $mail->Username = GUSER; 
     $mail->Password = GPWD; 
    } else { 
     $mail->Host = SMTPSERVER; 
     $mail->Username = SMTPUSER; 
     $mail->Password = SMTPPWD; 
    }   
    $mail->SetFrom($from, $from_name); 
    $mail->Subject = $subject; 
    $mail->Body = $body; 
    $mail->AddAddress($to); 
    if(!$mail->Send()) { 
     $error = 'Mail error: '.$mail->ErrorInfo; 
     return false; 
    } else { 
     $error = 'Message sent!'; 
     return true; 
    } 
} 

그리고 마지막으로는 필요한 경우에만 ( $is_gmail = false를 전달하여) 우리의 백업을 사용하여, 우리의 새로운 기능을 사용하십시오.

$msg = 'Hello World'; 
$subj = 'test mail message'; 
$to = '[email protected]'; 
$from = '[email protected]'; 
$name = 'yourName'; 

if (smtpmailer($to, $from, $name, $subj, $msg)) { 
    echo 'Yippie, message send via Gmail'; 
} else { 
    if (!smtpmailer($to, $from, $name, $subj, $msg, false)) { 
     if (!empty($error)) echo $error; 
    } else { 
     echo 'Yep, the message is send (after doing some hard work)'; 
    } 
} 

예제 코드는 위에 링크 된 튜토리얼에서 가져온 것입니다.

0

PHPMailer에 내장 된 모든 노력이 필요하지 않습니다. 호스트를 설정하면, 그냥이 같은 (당신은 또한 동시에 보안 설정을 지정할 수 있습니다) 세미콜론으로 구분 된 목록에 하나 이상을 추가

$mail->Host = 'tls://smtp.gmail.com:587;tls://smtp2.gmail.com;ssl://mail.example.net:465'; 

PHPMailer 제공된 순서대로, 그들 모두를 시도 할 것이다 , 포기하기 전에. 이전 버전의이 영역에 버그가 있었기 때문에 PHPMailer의 최신 버전을 사용하고 있는지 확인하십시오.

+1

오케이. 그러나 목록에있는 다른 smtp 서버에 대한 다양한 사용자 이름과 암호를 어떻게 제공합니까? –

+0

그 메커니즘으로, 당신은하지 않습니다. - local-ish 제출 실패는 어쨌든 매우 드문 일입니다. 또한 특정 MX를 제공하는 모든 호스트가 동일한 자격 증명을 사용하는 것이 일반적입니다. 당신이 가지고 있지 않다면, 당신 자신의 서버 배열을 반복하고, 실패를 파악한 다음 각각에 대한 ID/패스를 재설정하십시오. – Synchro