Проблема с отправкой кириллической электронной почты с помощью PHP. Моя сторона: Сервер IIS – База данных MsSQL – сервер электронной почты: Exchange 2010 / связь через PHP EWS /
Reciever является официальным владельцем компании UA Goverment со своим специальным программным обеспечением для получения электронных писем. Он работает с MS Outlook / вручную send /.
Я попытался отправить его как text / not html / или я попробовал PHP Mailer, я тоже уже пытался с 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);
Спасибо,
Если он работает с обычным клиентом Outlook, но не с вашим решением, первой проверкой будет сравнить заголовок из двух примерных писем (один из Outlook и один из вашего решения). Я думаю, что контент-тип правильно настроен с помощью 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';
Примечание. Хорошая отправная точка в отношении варианта кодирования содержимого . Вы также можете проверить официальное руководство Microsoft здесь .