0

Clicatell SMTP API に電子メールを送信する php を送信しようとしています。アイデアは単純です - PHP SOAP クライアントを使用して SQL サーバーに呼び出しを行い、返信を取得し、この返信を Clicatell サーバーに送信される電子メール本文に挿入します。

<?php

$to = 'sms@messaging.clickatell.com';

$today = strtoupper(date('dMy')); 
$subject = 'Test sms sent on ' . $today;

// API request and response goes here 
//this is how the response from the api looks like

$response ='To:4412345677693\r\nTo:4412345665693\r\nTo:4412375677693\r\nTo:4463879456776\r\n';  

$message = 'api_id: 12345678\r\nuser:user1234\r\npassword:PxAxSxSxWxOxRxD\r\n' . $response . 'Reply: youremail@yourdomain.com\r\ntext:Test Message Using Clickatell api\r\n'; 

$headers = 'MIME-Version: 1.0' . '\r\n';
$headers .= 'Content-type:text/html;charset=UTF-8' . '\r\n';
$headers = 'From: no-reply@example.com' . '\r\n' .

mail($to,$subject,$message,$headers);
?>

これにより、うまくいけば、次のようなプレーンテキストの電子メールが生成されるはずです。

To: sms@messaging.clickatell.com

api_id: 12345678
User: user1234
Password: PxAxSxSxWxOxRxD
To:4412345677693
To:4412345665693
To:4412375677693
To:4463879456776
Reply: youremail@yourdomain.com
text: Test Message Using Clickatell api

ただし、すべてを1行で取得しています。そして、助けていただければ幸いです。

4

2 に答える 2

1

制御文字を適切に処理するには、引用符を二重引用符に変更するだけです。

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/html;charset=UTF-8\r\n";
$headers .= "From: no-reply@example.com\r\n";

$response と $message にも同じことが適用されます。それは役に立ちますか?

于 2015-03-30T18:48:21.600 に答える
0

Content-type:text/html;charset=UTF-8ヘッダーに設定しているため、これが発生していると思わ<br>れるため、改行を取得するために使用する必要があります。

HTML ではなくプレーン テキストが必要なため、より適切なコンテンツ タイプを使用する必要があります。Content-type: text/plain; charset=iso-8859-1例えば使ってみてください。


"\n"考慮すべきもう 1 つの点は、(php のマニュアルによると) 一部のリレーがテキストを"\r\n"UNIX システム上で「誤って」変換することです。代わりに PHP EOF 定数を使用することをお勧めします。"\r\n"

http://php.net/manual/en/function.mail.php


また、単一引用符で囲まれた文字列を使用すると、 が をエスケープ文字として'\r\n'扱わないことがわかります。\目的の動作を得るために、二重引用符で囲まれた文字列を使用する必要がある場合があります"\r\n"

http://php.net/manual/en/language.types.string.php

于 2015-03-30T16:49:45.610 に答える