php 로 첨부 된 이메일 보 내기-(PHPMailer 에서 사용 한 실례 분석)

6064 단어 phpphpmailer

/*PHPMailer PHP 。 :
  *. , ,
  *. :8bit,base64,binary quoted-printable
  *. SMTP
  *. SMTP
  *. Html
  *.
  *.
  *.
  *. SMTP :Sendmail,qmail,Postfix,Imail,Exchange
  *.

phpMailer php , 、 、 、 , ,.....
:http://phpmailer.worxware.com/
:http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
*/
require_once('include/PHPMailer/class.phpmailer.php'); // PHPMAILER
$mail = new PHPMailer(); //
$mail -> CharSet='utf-8'; //
$mail -> SetLanguage('ch','include/PHPMailer/language/');  //          
$mail -> IsSMTP(); // SMTP
$mail -> SMTPAuth = true; // SMTP  
$mail -> Host = SMTP_SERVER; //SMTP  
$mail -> Port = SMTP_SERVER_PORT; //SMTP
$mail -> From = SMTP_USER_MAIL; // EMAIL
$mail -> FromName = 'jasonxu'; // SMTP  
$mail -> Username = SMTP_USER_NAME; //  
$mail -> Password = SMTP_USER_PASS; // SMTP  
$mail -> Subject = ' '; //  
$mail -> AltBody = 'text/html'; // HTML
$mail -> Body = ' ';//
$mail -> IsHTML(true);  // HTML
$mail -> AddAddress('chinajason2008#gmail.com','jasonxu'); //  
$mail -> AddReplyTo('chinajason2008#gmail.com','jasonxu'); //
$mail -> AddAttachment('include/id.csv','att.csv');//
if(!$mail -> Send()) //  
var_dump($mail -> ErrorInfo);  //
주의:phpmailer 가 첨부 파일 을 추가 할 때 첨부 파일 이름 에 첨부 파일 의 접 두 사 를 반드시 써 야 합 니 다.첨부 파일 접 두 사 를 쓰 지 않 으 면 기본 첨부 파일 접 두 사 는.txt 입 니 다.예 를 들 어$mail->AddAttachment('include/id.csv','att');/첨부 파일 의 경로 와 첨부 파일 이름 이 위 와 같이 첨부 파일 을 추가 하면 최종 적 으로 받 은 첨부 파일 은 att.txt 일 수 있 습 니 다.AddAttachment 는 첨부 파일 인 코딩 방식 과 첨부 파일 형식 을 설정 할 수 있 습 니 다.예 를 들 어 위의 첨부 파일 추가 도$mail->AddAttachment('include/id.csv','att.csv','binary','text/comma-separated-values')로 설정 할 수 있 습 니 다./첨부 파일 의 경로 와 첨부 파일 이름,첨부 파일 의 인 코딩 방식 은 대략 몇 가지 가 있 습 니 다.8bit,base 64,binary,and quoted-printable 인 코딩 을 지원 하고 CSV 가 받 아들 일 수 있 는 MIME Type/application/ocket-stream/text/coma-separated-values(추천)/text/csv 이기 때문에 csv 형식 파일 의 첨부 파일 형식 은 위의 세 가지 중 임의의 것 일 수 있 습 니 다.
이전 프로젝트 에서 메 일 로 보 낸 인 스 턴 스 는 줄 임 말 판 을 정리 하여 사용 하기에 편리 했다.

$body=$_smtp_body;
$mail=new PHPMailer();// PHPMailer
//$mail->SMTPSecure='tls';
$mail->CharSet="utf-8"; //
$mail->IsSMTP();// SMTP
$mail->Host=$_smtp_server;// SMTP
$mail->Port=$_smtp_port;// , 25
$mail->From=$_smtp_from_mail; //
$mail->FromName=$_smtp_from_name;//
$mail->Username=$_smtp_username;
$mail->Password=$_smtp_password;
$mail->AddAddress("$email","");// ( 1) ( 2)
$mail->SMTPAuth=true;// SMTP
$mail->Subject=$_smtp_subject;//
//$mail->AltBody="text/html";
$mail->Body=$body;//
$mail->IsHTML(true);// html
//$mail->WordWrap=50;                                 //
//$mail->AddReplyTo("[email protected]","samzhang");     //
$mail->SMTPDebug=0;
if($mail->Send()){//
  exit 'ok';
}else{
  exit 'fail';
}
예전 에 PHPMailer 를 처음 사 용 했 을 때 이상 한 문제 가 발생 했 고 인터넷 에서 자 료 를 찾 는 데 많은 시간 을 들 여서 야 해결 할 수 있 었 다.서버 PHP 환경 에서 fsockopen 함 수 를 금지 할 수 없 음 을 기억 합 니 다.그렇지 않 으 면 메 일 을 보 낼 수 없 지만 해결 방법 도 있 습 니 다.한 마디 로 하면 처음에 사용 하면 항상 순 조 롭 지 못 하 다.시간 이 오래 되 었 기 때문에 지금 생각해 보면 구체 적 으로 무엇 을 고 쳤 는 지 모르겠다.그래서 현재 사용 중인 PHPMailer 디 렉 터 리 파일 을 포장 해서 CSDN 에 올 리 는 것 도 나중에 사용 하기 편 하도록 하 는 동시에 이 일 로 고민 하 는 친구 들 에 게 도 편리 합 니 다.PHPMailer 다운로드:http://xiazai.jb51.net/201304/yuanma/PHPMailer_jb51net.rar또한 그 당시 에 발생 한 문제 에 수 록 된 내용 을 다음 과 같이 정리 합 니 다.1.Error:Could not connect to SMTP host 원인 1:메 일 시스템 이 요구 하지 않 는 smtp 요청 은 다 르 지만 대문자 가 허용 되 고 소문 자 는 지원 되 지 않 습 니 다.예 를 들 어 왕 이,텐 센트 의 메 일 박스 등 이 있 습 니 다.(그렇지 않 은 지 에 대해 서 는 테스트 를 해 본 적 이 없다.어차피 대문자 로 바 뀌 어도 영향 을 주지 않 는 다)
해결 방법:

public function IsSMTP() {
  $this->Mailer ='SMTP'; // smtp ->SMTP ; , 。
}

// Choose the mailer and send through it
switch($this->Mailer) {
  case 'sendmail':
    return $this->SendmailSend($header, $body);
  case 'SMTP':// smtp ->SMTP ; , 。
    return $this->SmtpSend($header, $body);
  case 'mail':
  default:
    return $this->MailSend($header, $body);
}

2.SMTP Error:Could not connect to SMTP host 원인:어떤 가상 호스트 나 서버 는 안전 을 위해"fsockopen()함수"를 차단 하여 메 일 을 보 낼 수 없습니다.
해결 방법:
fsockopen 함수 사용 하기
우선 php.ini 에서 아래 두 개의 점 수 를 빼 세 요.
;extension=php_sockets.dll
;extension=php_openssl.dll
 fsockopen 함수 교체
class.smtp.php 파일 에서 fsockopen 함 수 를 pfsockopen 함수 로 바 꿀 수 있 습 니 다.
3.메 일 기능 을 인 스 턴 스 화하 지 못 한 이유:
설정 한 매개 변수 가 정확 하지 않 습 니 다.저 는 gmail 을 사용 하여 기본 적 인 테스트 를 했 습 니 다.다음 에 다른 매개 변 수 를 설정 해 야 합 니 다.
해결 방법:
$mail->SMTPSecure = ‘tls'; //이 말 만 더 하면 돼.
주:이런 잘못 은 내 가 만난 적 이 없 기 때문에 위의 예 에서 이 내용 은 내 가 주석 을 달 았 다.만약 이런 잘못 에 부 딪 혔 다 면 이 문장 을 사용 해 보 세 요.

좋은 웹페이지 즐겨찾기