PHP:用西里尔文发送电子邮件(乌克兰文本)

时间:2017-10-31 10:23:05

标签: php email exchange-server php-ews

使用PHP发送西里尔电子邮件时出现问题。 我这边: 服务器IIS - 数据库MsSQL - 电子邮件服务器:Exchange 2010 /通过PHP EWS /

进行通信

Reciever是UA政府拥有的公司,拥有用于接收电子邮件的特定软件。它正在使用MS Outlook /手动发送/.

我尝试发送它作为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);

谢谢,

1 个答案:

答案 0 :(得分:0)

如果它使用普通的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';

注意:这是一个很好的starting point regarding the content-type encoding选项。您也可以查看官方Microsoft howto here