セットアップに変換されている等しいPHPは、HTMLは、電子メールは - ...メールで符号が異なる文字
私は通常の方法で、PHPを経由してメールを送信しています...
C:以下の内容を設定してコードブロック0
mail('', $subject, $message, $headers);
...ブロック1
$boundary = uniqid('np');
$message = '';
$subject = 'Email Subject';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: SURL <[email protected]>\r\n";
$headers .= "To: ".$email."\r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";
// Plain Text
$message .= "Content-Type: text/plain; charset=utf-8\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= 'Hi, you handsome SOB!!
\n\n
We have ...
/n/n
And ...
\n\n
http://someurl.com/.../.../?a=' . $var1 . '&b=' . $var2;
$message .= "\r\n\r\n--" . $boundary . "\r\n";
// HTML
$message .= "Content-Type: text/html; charset=utf-8\r\n";
$message .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$message .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Some Title</title>
<style type="text/css">
... Lots of styles...
</style>
</head>
<body>
<div class="message_container">
<div class="message_logo"></div>
<div class="message_leading_line">
Hi, you handsome SOB!!
</div> <!-- end message_leading_line -->
<div class="message_top_content">
We have ...
<br/>
And ...
<a href="http://someurl.com/.../.../?a=' . $var1 . '&b=' . $var2 . '" >visit this link</a>.
</div> <!-- end message_top_content -->
<div class="message_bottom_content">
If link doesn\'t work, copy and paste...
<pre>http://someurl.com/.../.../?a=' . $var1 . '&b=' . $var2 . '</pre>
</div> <!-- end message_bottom_content -->
</div> <!-- end message_container -->
</body>
</html>';
$message .= "\r\n\r\n--" . $boundary . "--";
これはすべて正常に動作します。電子メールは問題なく送信されます。電子メールを表示するには、適切なスタイルが設定されている必要があります。動的に追加されたすべてのコンテンツが含まれます。
行動はこれまで...
は、私がこれまでに多くのテストケースを試した、すべてが正確にインデントとして送られてきました。スタイリングとすべて。
そのような成功した場合は、持っていた:
コードブロック3-1、3-2
$var1 = '4pD9051LsVtQu96pLBH41019v28T0o4Z2I3U6urs';
$var2 = 'verPkBE415i447V6R9o';
を...電子メール内のリンクだったように:
http://someurl.com/.../.../?a=4pD9051LsVtQu96pLBH41019v28T0o4Z2I3U6urs&b=verPkBE415i447V6R9o
電子メールが正しく送信され、リンクが正しく表示され、リンクが機能しました(クリックしてコピー/貼り付け)。完璧!
号...最新のテストのための
:
コードブロック4-1、4-2
$var1 = '73jbzUN90j27ME5N6W4jh24o992V91m3R632Hlu0';
$var2 = 'avr1owgJAAB3h4l1brw';
...リンクするように:
http://someurl.com/.../.../?a=73jbzUN90j27ME5N6W4jh24o992V91m3R632Hlu0&b= avr1owgJAAB3h4l1brw
Th時間は、電子メールが送信されました... 正しく?それは明白な問題なしで送られた。一見すると、すべてがそうであったようだった。すべてのスタイリングはそれがあったはずだったが、すべてのコンテンツが必要な場所にあった。
注:Gmailのバージョンが表示されるマークアップの全てを除去し、プレーンテキストとして提示して、後者のバージョンでした。それでも間違ったURLが提示されました。
しかし、精密検査時に、電子メールクライアントに表示されたリンク(AppleのMailとGmailの、両方の別々のアカウントを)した
http://someurl.com/.../.../?asjbzUN90j27ME5N6W4jh24o992V91m3R632Hlu0&b=ver1owgJAAB3h4l1brw
違いはすぐに疑問符を以下れます。?a=73jb
は、代わりに?asjb
です。リンクをクリックしても機能しないし、コピーして貼り付けることもできない。明白な理由のために - そう!
The Quirk ...?
ソースと同じ電子メールを表示する場合、奇数のもの(表示 - >メッセージ - >生のソース)、リンクは正確に彼らがあるべきとしている...
生ソース1
To:
Subject: Email Subject
X-PHP-Originating-Script: 2181:email.php
MIME-Version: 1.0
From: SURL <[email protected]>
To: [email protected]
Content-Type: multipart/alternative;boundary=np57849efa2a13b
X-Identified-User: {:box895.bluehost.com:...:...e.com} {sentby:program running on server}
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Hi, you handsome SOB!!
\n\n
We have ...
/n/n
And ...
\n\n
http://someurl.com/.../.../?a=73jbzUN90j27ME5N6W4jh24o992V91m3R632Hlu0&b=avr1owgJAAB3h4l1brw
--np57849efa2a13b
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Some Title</title>
<style type="text/css">
... Lots of styles...
</style>
</head>
<body>
<div class="message_container">
<div class="message_logo"></div>
<div class="message_leading_line">
Hi, you handsome SOB!!
</div> <!-- end message_leading_line -->
<div class="message_top_content">
We have ...
<br/>
And ...
<a href="http://someurl.com/.../.../?a=73jbzUN90j27ME5N6W4jh24o992V91m3R632Hlu0&b=avr1owgJAAB3h4l1brw" >visit this link</a>.
</div> <!-- end message_top_content -->
<div class="message_bottom_content">
If link doesn\'t work, copy and paste...
<pre>http://someurl.com/.../.../?a=73jbzUN90j27ME5N6W4jh24o992V91m3R632Hlu0&b=avr1owgJAAB3h4l1brw</pre>
</div> <!-- end message_bottom_content -->
</div> <!-- end message_container -->
</body>
</html>
--np57849efa2a13b--
何が起こっているのですか? のデータはと表示されますが、非常に特殊なケースではすべてのcattywampusが表示されています。 =73
がs
に変換されるのはなぜですか(または、おそらくa=73
〜as
...)ですか?
ASCII tablesとHTML Codesをチェックしました。どちらの場合でも、73
に関連する唯一のものは大文字「i」です。
EDIT 1
は、私はすぐにこの質問を投稿した後This HTML URL Encoding Referenceつまずくだろうことを知っていないでしょう。
%73
には、s
が関連付けられています。
しかし、私はまだ=73...
がどのように%73...
になり、その後s...
になっているのかよく分かりません。確かにutf-8
と関係しているようです。
は確かに私は電子メールを送信する最初の仲間じゃない、方法がなければならない...
EDIT 2 - SOLUTION!
解決方法や説明が長すぎたため、回答として投稿しました。