2017-09-08 12 views
0

私は組み込みのPHPメール機能を使用して、HTMLとプレーンテキスト版のメッセージを含むマルチパートメッセージを送信しようとしています。私はさまざまなエンコーディングタイプで遊んでいましたが、私は問題にぶち当たっています。元々はContent-Transfer-EncodingBinaryに設定しましたが、感嘆符は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); 

一体何をやっていますか?

+0

を助ける可能性があり、次のコードを試してみてください。電子メールは非常に複雑になります。 https://github.com/PHPMailer/PHPMailerのようなものを試してみてください。私を信じて、あなたの人生をもっと楽にしてくれるでしょう。 –

+0

@matt私はPHPMailerを試しましたが、何をするにしても自分のサーバーで動かすことができません。それはGoDaddyでホストされています。 GoDaddyでもビルトインのメール機能を使うと言っています。 – Austin

+1

https://www.mailgun.com/と統合してみてください。あなたはAPI呼び出しを行い、彼らはあなたのために電子メールを作成して送信します。 –

答えて

-1

こんにちは

$to = "[email protected]"; 
    $subject = "test subject"; 
    $plainTextMessage = "Hi all"; 
    $HTMLmessage = "<b>Hi all</b>"; 
    //$boundary = uniqid('np');    
    $boundary = md5(uniqid(time())); 
    $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); 

が、それは私がライブラリを使用してというよりも、この1を自分でロールしようとして推薦する

+0

ここで提供した唯一の提案である境界問題ではないことを確認しました。 – Austin

+0

はい。今日は私だけがこれに取り組んだ。このコードは私にとってうまくいきます。何かエラーが出ていますか? – KMS

関連する問題