私は組み込みのPHPメール機能を使用して、HTMLとプレーンテキスト版のメッセージを含むマルチパートメッセージを送信しようとしています。私はさまざまなエンコーディングタイプで遊んでいましたが、私は問題にぶち当たっています。元々はContent-Transfer-Encoding
をBinary
に設定しましたが、感嘆符は78文字ごとに配置されていました。私もbase64
を試しましたが、私はbase64が私がやっていることに対して過剰なものだと信じています。PHPでマルチパート/代替電子メールを正しく送信する方法
私がやっているのは、基本HTML、エンコードされた画像、ファイル、または添付ファイルを送信することだけです。私はソースコードを人間が読めるようにするエンコード方法を好むだろう。
Quoted-Printable
が私が探していると聞いていましたが、そのエンコーディングタイプを使用してメッセージを送信しようとしたときに結果が本当に変わってしまいました。私は"
のシンボルがメッセージのソースコード全体に散らばっていることに気付きました。ここで
は、私が使用しているコードです:私はここで間違って
$to = "[email protected]";
$subject = "test subject";
$boundary = uniqid('np');
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: [email protected]\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$headers .= "Return-Path: [email protected]\r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";
$message = "This is a MIME encoded message.";
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-Type: text/plain; charset=UTF-8\r\n";
$message .= "Content-Transfer-Encoding: Quoted-Printable\r\n";
$message .= $plainTextMessage;
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-Type: text/html; charset=UTF-8\r\n";
$message .= "Content-Transfer-Encoding: Quoted-Printable\r\n";
$message .= $HTMLmessage;
$message .= "\r\n\r\n--" . $boundary . "--";
$ok = mail($to,$subject,$message,$headers);
一体何をやっていますか?
を助ける可能性があり、次のコードを試してみてください。電子メールは非常に複雑になります。 https://github.com/PHPMailer/PHPMailerのようなものを試してみてください。私を信じて、あなたの人生をもっと楽にしてくれるでしょう。 –
@matt私はPHPMailerを試しましたが、何をするにしても自分のサーバーで動かすことができません。それはGoDaddyでホストされています。 GoDaddyでもビルトインのメール機能を使うと言っています。 – Austin
https://www.mailgun.com/と統合してみてください。あなたはAPI呼び出しを行い、彼らはあなたのために電子メールを作成して送信します。 –