2012-02-17 7 views
3

나는이 스크립트PHP PEAR send_mail 이름과 이메일

$to = '[email protected]'; 
$headers['To'] = $to; 
$headers['From'] = '"My Name" <[email protected]>'; 
$headers['Return-Path'] = '[email protected]'; 
$headers['Subject'] = 'Subject'; 

$auth = array('host' => MAIL_HOST, 'auth' => true, 'username' => MAIL_USER, 'password' => MAIL_PASS); 
$smtp = Mail::factory('smtp', $auth); 
$mail = $smtp->send($to, $headers, $message); 

if (PEAR::isError($mail)) 
    echo('<p>PEAR mail: '.$mail->getMessage().'</p>'); 
else 
    echo('<p>PEAR mail: Message successfully sent!</p>'); 

된 전자 메일을 보내려는 tryng 해요 그러나 나는 다음과 같은 메시지가 도착과 함께 보낸 사람을 설정하지 못했습니다 : 나는 할 때

Failed to set sender: "My Name" <[email protected]> [SMTP: Invalid response code received from server (code: 501, response: <"My Name" <[email protected]>>: "@" or "." expected after ""My Name"")] 

을 다음과 같은 필드에서 :

$headers['From'] = '[email protected]'; 

잘 작동하고 이메일을 수신합니다.

보낸 사람의 이름으로 전자 메일을 보내려면 어떻게해야합니까?

+0

quoteless 해 보셨습니까? 'My Name <[email protected]>'도 유효한 사서함입니다. – Alexander

답변

5

Return-Path와 Reply-To가 동일하지 않습니다.

반송 경로 : 전자 메일의 봉투 보낸 사람을 재정의하려면 Return-Path 헤더를 설정하면 From : 헤더 값 (PEAR 웹 사이트에서) 대신 해당 값이 사용됩니다. Return-Path의 이름은 전자 메일 주소로 설정할 수 없습니다.

답장 : 수신자가이 주소로 회신하도록합니다. 이름과 이메일 주소를 설정할 수 있습니다.

그래서 Reply-To로 Return-Path를 바꾸면 작동합니다.

1

왜 보낸 사람의 이메일 주소가 필요한가요? 나는 "Reply-To"헤더를 추가하고 거기에 이메일 주소를 제공하고 From Name을 지정해야합니다.

+0

이메일 주소가 필요하지 않은 이유는 발신자가 아니기 때문에 발신자가 아니기 때문입니다. 하지만 Return-Path가 Reply-To 이었지만 오류가 발생했지만 실수였습니다. Reply-To로 Return-Path를 바꾸면 작동합니다. – Marm

+0

reply-to 설정으로 듣는 것이 좋습니다. –