헤더가 표시되는 방식을 정확하게 선택하여 이메일을 보냅니다.

헤더가 표시되는 방식을 정확하게 선택하여 이메일을 보냅니다.

Yahoo! 측에서 비정상적인 동작을 발견했습니다. 헤더가 base64로 인코딩되고 2줄 이상인 경우 제목 줄 해석에 대한 메일입니다. 예:

Subject: =?UTF-8?B?4pyIIEFvIFN1bCBkYSBBbcOpcmljYSDimIUgVGFyaWZhcyBFeGNs?=
    =?UTF-8?B?dXNpdmFzIOKYhSBQYXJjZXJpYSBMQVRBTSAmIEFlcm9sw61uZWFzIEFyZ2Vu?=
    =?UTF-8?B?dGluYXM=?=

버그를 격리하기 위해 원하는 헤더가 포함된 이메일을 나 자신에게 보낼 수 있기를 원합니다. 즉, 전송된 이메일의 일반 텍스트 버전에 나타나는 내용을 스스로 제어할 수 있기를 바랍니다.

제가 이것을 제어할 수 있는 방법이 있나요?

여러 웹메일 도구를 사용하고 있지만 헤더에 표시되는 내용을 제어할 수 있는 방법이 없어 Google에서 맞춤 솔루션을 검색했지만 아무 소용이 없었습니다.

답변1

PHP에서

그렇게 하면 실제로 많은 통제력을 가질 수 있습니다.

PHP PEAR를 사용하면 다음과 같은 작업을 수행할 수 있습니다.

$_SMTP = array(
    "host"      =>  "ssl://smtp.gmail.com",
    "username"  =>  "[email protected]",
    "password"  =>  "password123",
    "port"      =>  "465",
    "auth"      =>  true
);

include_once('PEAR.php');
include_once('Mail.php');
include_once('Mail/mime.php');

$mime = new Mail_mime();
$mime->_build_params['html_charset']='UTF-8';
$mime->_build_params['text_charset']='UTF-8';
$mime->_build_params['head_charset']='UTF-8';
$mime->_build_params['head_encoding']='base64';

$mime->setTXTBody("Plaintext message");
$mime->setHTMLBody("<b>HTML message</b>");

$hdrs = array(
    'From'      => '"Me" <[email protected]>',
    'Subject'   => "Test message",
    'To'        => '"Example" <[email protected]>'
);

$body = $mime->get();
$headers = $mime->headers($hdrs);

$mail =& Mail::factory('smtp', $_SMTP);

$result = $mail->send('"Example" <[email protected]>', $headers, $body);

print_r($result);

사실, print_r($headers);보내기 전에도 그 내용에 대한 인상을 줄 수도 있습니다. 이 문제를 해결할 수 있는 더 많은 옵션이 있으므로 이를 조사해 볼 수도 있습니다.

파이썬에서

기본 라이브러리를 사용하여 Python에서도 그렇게 할 수 있습니다.이메일그리고smtplib설명한대로여기

주요 아이디어는 헤더를 설정하는 것이며 다음을 사용하여 일반 텍스트로 값을 설정할 수 있습니다.

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = "=?utf-8?b?Y2Fmw6k=?="

또는 텍스트에서 적절한 형식을 생성하려면 다음을 수행하십시오.

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = Header("café","utf8")

관련 정보