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")