0

PHP でキリル文字の電子メールを送信する際の問題。私の側: サーバー IIS - データベース MsSQL - 電子メール サーバー: Exchange 2010 /communication via PHP EWS/

Reciever は、メールを受信するための特定のソフトウェアを備えた UA 政府所有の会社です。MS Outlook /manually send/ で動作しています。

テキストとして送信しようとしました/htmlではなく/またはPHPメーラーを試しました.C#でも試しました/すべてこの特定の会社と連携していません/gmailまたはhotmailでは正常に動作しています//.

$ews = new ExchangeWebServices($server, $username, $password);

$msg = new EWSType_MessageType();

$toAddresses = array();
$toAddresses[0] = new EWSType_EmailAddressType();
$toAddresses[0]->EmailAddress =;
$toAddresses[0]->Name =; 

$msg->ToRecipients = $toAddresses;

$fromAddress = new EWSType_EmailAddressType();

$fromAddress->EmailAddress =;
$fromAddress->Name =;


$msg->From = new EWSType_SingleRecipientType();
$msg->From->Mailbox = $fromAddress;

$msg->Subject = "Test";

$msg->Body = new EWSType_BodyType();

$msg->Body->BodyType = 'HTML'; //Text HTML
$msg->Body->_ = $UAText;

$msgRequest = new EWSType_CreateItemType();
$msgRequest->Items = new EWSType_NonEmptyArrayOfAllItemsType();
$msgRequest->Items->Message = $msg;
$msgRequest->MessageDisposition = 'SendAndSaveCopy';
$msgRequest->MessageDispositionSpecified = true;

$response = $ews->CreateItem($msgRequest);
var_dump($response);

ありがとうございました、

4

1 に答える 1

0

通常の Outlook クライアントで動作するが、ソリューションでは動作しない場合、最初のチェックは、2 つのサンプル メール (Outlook からの 1 つとソリューションからの 1 つ) のヘッダーを比較することです。content-type は Outlook で正しく設定されていると思いますが、ソリューションでは正しく設定されていません。

そのため、ソリューションでコンテンツ エンコーディングを UTF-8 に設定することをお勧めします。したがって、$UAText 内のコンテンツは HTML のものであると想定しています。したがって、次の方法でその部分を UTF-8 としてフラグ付けすることをお勧めします。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

そしてそれがどのように機能するかを見てください。

さらに、次の方法でコード内にエンコーディングを直接設定することもできます。

$ews = new ExchangeWebServices($host, $user, $password, ExchangeWebServices::VERSION_2007_SP1);
$msg = new EWSType_MessageType();
$msg->MimeContent = new EWSType_MimeContentType();
$msg->MimeContent->_ = base64_encode("Mime-Version: 1.0\r\n"
    . "From: michael@contoso.com\r\n"
    . "To: amy@contoso.com\r\n"
    . "Subject: nothing\r\n"
    . "Date: Tue, 15 Feb 2011 22:06:21 -0000\r\n"
    . "Message-ID: <{0}>\r\n"
    . "X-Experimental: some value\r\n"
    . "\r\n"
    . "I have nothing further to say.\r\n");
$msg->MimeContent->CharacterSet = 'UTF-8';

注: content-type エンコーディングオプションに関する良い出発点は次のとおりです。また、Microsoft の公式ハウツーをこちらで確認することもできます。

于 2017-11-03T10:28:13.183 に答える